2012-10-24 38 views
0

所以我有一个名为“HoldingQueue”的表,我想比较两行到两个值,并返回不匹配那两个行的每一行值。以下是内容的一个例子:比较MySQL中两个表格中的两行,只显示负面结果

* * * * * * * * * * * * 
* ItemCode * Channel * 
* * * * * * * * * * * * 
* 1PX1  * Test  * 
* * * * * * * * * * * * 
* 2PX1  * Test  * 
* * * * * * * * * * * * 
* 3PX1  * Test2 * 
* * * * * * * * * * * * 

和查询:

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

这仅返回“3PX1 | Test2的” - 在这里我希望它返回的一切,是不是“1PX1 |测试“ - 所以”2PX1 |测试“也应该返回。

任何想法?在这里,我的头撞在墙上。

编辑:好的,所以它使用小数据集使用或...但我只是意识到我遇到的问题。我试图拉动“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表中有内容的任何项目。这做到了。将迎来谢尔盖·库德里亚夫采夫的答案,因为他没有正确地回答我最初的问题(即留出多少,我面临的问题)

回答

1

变化AND到查询OR,所以这将是

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

好,这似乎与小样本一起工作,但不是我试图使用的较大数据集。我会更新我的主帖。 – rwhit85