所以我有一个名为“HoldingQueue”的表,我想比较两行到两个值,并返回与这两个值不匹配的每一行。以下是内容示例:
* * * * * * * * * * * *
* ItemCode * Channel *
* * * * * * * * * * * *
* 1PX1 * Test *
* * * * * * * * * * * *
* 2PX1 * Test *
* * * * * * * * * * * *
* 3PX1 * Test2 *
* * * * * * * * * * * *
查询:
SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" AND Channel<>"Test";
这只返回“3PX1 | Test2” - 我希望它返回所有不是“1PX1 | Test”的东西 - 所以“2PX1 | Test”也应该返回。
有什么想法吗?有点在这里撞墙撞墙。
编辑:好的,所以它使用OR来处理小数据集...但我刚刚意识到我遇到的问题。我试图拉动“ItemCode”和“Channel”将它与另一个有多个条目的表进行比较,但我现在意识到因为该表上有多个条目,所以一切都至少有一次没有条件这组价值观。
我认为我的问题比这更复杂。
编辑#2:知道了......
SELECT Channel, ItemCode FROM HoldingQueue H
WHERE NOT EXISTS
(SELECT * FROM SKUList S
WHERE
H.ItemCode=S.SKU
AND
H.Channel=S.Channel
) GROUP BY H.Channel,H.ItemCode;
我想从第二个SKUList表中找到与任何东西不匹配的任何项目。这样做了。将Sergey Kudriavtsev标记为答案,因为他正确地回答了我的初步问题(遗漏了我面临的大部分问题)
答案 0 :(得分:1)
在您的查询中将AND
更改为OR
,因此它将是
SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" OR Channel<>"Test";