【发布时间】:2019-08-28 19:38:57
【问题描述】:
我正在寻找一个查询来一次获取多行的多列数据。
表 1. 无空值
customer, price1, price2, price3, ..., price10
Tata, 100, 200, 300, ..., 1000
Ford, 111, 222, 333, ..., 1388
我可以使用以下查询:
SELECT *
FROM table1
WHERE (customer,price1,price2,price3,...~price10)
IN (
(Tata,100,200,300,400,500,..~1000)
OR
(Ford,111,222,333,444,555,...~1388)
表 2:
consumer_code, price1, price2, price3, price4, …, price10
Chn, 100, 200, (null), (null), …, 600
Hyd, 121, 378, 262, (null), …, (null)
SQL where in 运算符不接受空值。 有什么更好的查询建议吗?
我需要一次性传递>500或1000的批量数据,以便通过使用多个select语句减少多个db操作并提高检索速度。
【问题讨论】:
-
我不明白逻辑 - 你是说你只想要完全匹配的行,例如,如果 chn 在价格 3 中有 20 它不应该出现,或者你是说如果所有非空列匹配然后该行应该出现?
-
请注意,数据库表不是电子表格。认真考虑您当前的模式是否适合目的。 (提示:不是)
-
@P.Salmon 是的,我需要完全匹配的行。所有列的组合
-
@strawberry 我的架构需要支持这一点。我需要传递电子表格值并验证结果。