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