我在Sale中有很多行,并且SalesProcessed中有一行。MySQL内部连接不等于运算符
SELECT * FROM Sale
INNER JOIN SalesProcessed
ON Sale.id<>SalesProcessed.id
LIMIT 0,30
此代码返回SalesProcessed中id相同的行。为什么?
其实我需要销售行中哪些ID在SalesProcessed中不存在。
我在Sale中有很多行,并且SalesProcessed中有一行。MySQL内部连接不等于运算符
SELECT * FROM Sale
INNER JOIN SalesProcessed
ON Sale.id<>SalesProcessed.id
LIMIT 0,30
此代码返回SalesProcessed中id相同的行。为什么?
其实我需要销售行中哪些ID在SalesProcessed中不存在。
SELECT *
FROM Sale
LEFT JOIN SalesProcessed
ON Sale.id = SalesProcessed.id
WHERE SalesProcessed.id IS NULL
LIMIT 0,30
另一种方法
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
您应该检查与得到最好的结果
如果你想不存在行解释每个查询,这是错误的查询:
SELECT *
FROM Sale
LEFT JOIN SalesProcessed
ON Sale.ID = SalesProcessed.id
WHERE SalesProcessed.id IS NULL;
左连接是我错过的东西。现在明白了。谢谢 – pown