Sale中有很多行,SalesProcessed中有一行。
SELECT * FROM Sale
INNER JOIN SalesProcessed
ON Sale.id<>SalesProcessed.id
LIMIT 0,30
此代码返回id在SalesProcessed中的同一行。为什么呢?
实际上我需要销售行,而SalesProcessed中不存在ID。
答案 0 :(得分:10)
SELECT *
FROM Sale
LEFT JOIN SalesProcessed
ON Sale.id = SalesProcessed.id
WHERE SalesProcessed.id IS NULL
LIMIT 0,30
答案 1 :(得分: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
您应该使用explain检查每个查询以获得最佳结果
答案 2 :(得分:4)
如果您想要不存在的行,那就是错误的查询:
SELECT *
FROM Sale
LEFT JOIN SalesProcessed
ON Sale.ID = SalesProcessed.id
WHERE SalesProcessed.id IS NULL;