2011-08-26 31 views
4

我在Sale中有很多行,并且SalesProcessed中有一行。MySQL内部连接不等于运算符

SELECT * FROM Sale 
    INNER JOIN SalesProcessed 
    ON Sale.id<>SalesProcessed.id 
    LIMIT 0,30 

此代码返回SalesProcessed中id相同的行。为什么?

其实我需要销售行中哪些ID在SalesProcessed中不存在。

回答

10
SELECT * 
    FROM Sale 
     LEFT JOIN SalesProcessed 
      ON Sale.id = SalesProcessed.id 
    WHERE SalesProcessed.id IS NULL 
    LIMIT 0,30 
4

另一种方法

SELECT * FROM Sale 
where Sale.id not in (select SalesProcessed.id from SalesProcessed) 
LIMIT 0,30 



SELECT * FROM Sale 
where NOT EXISTS (
select SalesProcessed.id from SalesProcessed where Sale.id=SalesProcessed.id) 
LIMIT 0,30 

您应该检查与得到最好的结果

4

如果你想不存在行解释每个查询,这是错误的查询:

SELECT * 
FROM Sale 
LEFT JOIN SalesProcessed 
ON Sale.ID = SalesProcessed.id 
WHERE SalesProcessed.id IS NULL; 
+0

左连接是我错过的东西。现在明白了。谢谢 – pown