比较MySQL中两个表的两行,只显示负面结果

时间:2012-10-24 15:15:46

标签: mysql compare multiple-tables

所以我有一个名为“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标记为答案,因为他正确地回答了我的初步问题(遗漏了我面临的大部分问题)

1 个答案:

答案 0 :(得分:1)

在您的查询中将AND更改为OR,因此它将是

SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" OR Channel<>"Test";