我们的应用程序已使用此查询一段时间:
SELECT id
FROM invoice
WHERE id NOT IN
(SELECT invoice_id FROM invoice_transaction)
#437 rows returned
在代码审阅中,此查询是用左外部联接重写的:
SELECT invoice.id
FROM invoice
LEFT OUTER JOIN invoice_transaction on invoice.id=invoice_transaction.invoice_id
#586 rows returned
第一个查询返回437行,第二个查询(假设相同)返回586行。这不是左外连接的有效用法吗?
重写此查询的更好方法是什么?
谢谢您!
最佳答案
以下查询应返回与第一个查询相同的结果:
SELECT invoice.id
FROM invoice
LEFT OUTER JOIN invoice_transaction
on invoice.id = invoice_transaction.invoice_id
WHERE invoice_transaction.invoice_id IS NULL
关于mysql - 简化查询(使用左外部联接),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13242293/