我们的应用程序已使用此查询一段时间:

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/

10-14 19:24
查看更多