1
我们的应用程序已被现在使用的这个查询了一会儿:简化查询(左外连接)
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行。这不是左外连接的有效使用吗?
什么是更好的方式来重写这个查询?
谢谢!
他们不都是一样的。了解[SQL连接](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html):您可以使用过滤器制作第二个等同于第一个'在哪里invoice_transaction.invoice_id是NULL'。 – eggyal
在这个位置的维恩图似乎表明左外连接是我正在寻找的。 http://www.khankennels.com/blog/index.php/archives/2007/04/20/getting-joins/ – rinogo
啊啊,谢谢! – rinogo