SQL问题!我想在表格中选择多个字段,并根据另一个字段的值对一个字段的某个值执行过滤。 更清楚:
SELECT ORDER_NUMBER, PRICE FROM ORDER_TABLE1
WHERE PRICE IN (35, 40) AND ORDER_NUMBER IS NOT NULL
如果我这样做,那么我的查询将在ORDER_TABLE1上删除我的所有行WHERE PRICES = 15(例如)。
我想根据另一个字段的值过滤掉特定字段中某些值的行。所以在这里,我确实希望保持所有值WHERE PRICES = 15(无论ordnumber是否为null)。关于如何实现这一目标的任何指导? 谢谢你的帮助。
EDIT1:
我知道它会以这种方式工作,但我有大约10个字段来过滤我想要的方式,以下方式似乎不是超级高效(但后来,我是初学者):
SELECT ORDER_NUMBER, PRICE FROM ORDER_TABLE1
WHERE (PRICE = 35 AND ORDER_NUMBER IS NOT NULL)
OR (PRICE = 40 AND ORDER_NUMBER IS NOT NULL)
--ETC...
数据样本
**Table 1**
ordernumber -- price--
-----1------------35--
----NULL----------40--
-----3------------NULL--
-----4------------50--
----NULL----------25--
----11------------60--
**Expected output**
ordernumber -- price--
-----1-----------35--
-----3----------NULL--
-----4-----------50--
----NULL----------25--
-----11----------60--
NB:虚拟数据
答案 0 :(得分:0)
好的,在您编辑后,这似乎已接近,但也会返回NULL 25
:
WHERE NOT (ordernumber IS NULL AND price IN (35, 40))
答案 1 :(得分:0)
为了确保我能够正确理解,您想要查询除了行之外的所有内容(35,40等)PRICE
并且没有ORDER_NUMBER
?
在这种情况下,您只需执行以下操作:
SELECT ORDER_NUMBER, PRICE FROM ORDER_TABLE1
WHERE PRICE NOT IN (35, 40) OR ORDER_NUMBER IS NOT NULL
基本上,它会返回不在(35,40,...)中的所有内容,以及包含ORDER_NUMBER的所有行(所以那些具有35/40 /等等的行不是' t null)