2012-06-08 37 views
0

查询:MySQL的NOT IN查询只包括我想排除结果

SELECT * 
from t1 
INNER JOIN t2 ON t1.item_id = t2.item_id 
WHERE t1.item_id NOT IN 
(Select t2.item_id from t2) 

基本上,我试图排除在t2表的ITEM_ID所有的结果,但它仅包括一个结果item_id在t2表中。我在这里错过了什么......

感谢您的任何和所有回应!

+0

谢谢大家的提示和正确的答案!在我采用正确的方法后,这一切都归结为逻辑层面的问题。 – theisenm85

回答

0

您加入,然后排除一切:/

至少这就是SQL说here

尝试是这样的:

SELECT 
    item_id 
FROM 
    t1 
WHERE 
    item_id NOT IN (SELECT item_id from t2) 

为在here

2

我很惊讶你得到任何与该查询,因为你似乎排除任何你会通过加入包括。试着改变你的查询到这一点:

SELECT * from t1 
WHERE item_id NOT IN (SELECT item_id from t2) 
+0

+1让我笑 – jcho360

+0

非常感谢!发现我在放置“Not In”语句时遇到了一个逻辑问题(因为查询比发布更复杂一些。对于sql很新颖,所以非常感谢您提供的反馈详情,我没有加入表格来把它们联系起来。 – theisenm85

0

这将从T1中选择在T2中没有对应条目的项目。我认为这是你想要的。

SELECT * 
from t1 
LEFT JOIN t2 ON t1.item_id = t2.item_id 
WHERE t2.item_id IS NULL