2012-10-30 43 views
1

我知道如何在單個條件或使用WHERE鍵IS NULL的情況下在MySQL中執行LEFT JOIN,但是如何在ON語句中有多個條件時執行該操作?我有一個包含訂單號和發票日期的發票表。我也有一個包含訂單號和發貨日期的發貨表。我想從發票表中返回船表中沒有相應記錄的任何項目。例如...使用多個ON條件在MySQL中進行左加入

invoice table: 

InvoiceNum OrderNum InvoiceDate 
106433  136365  2011-10-03 
111888  136365  2012-06-19 

ship table: 

OrderNum ShipDate 
136365  2012-06-19 

我想編寫一個查詢將從發票表中返回只是發票號碼106433。有人知道如何最好地做到這一點。我正在將其他表格加入查詢中,但這是我無法解決的問題。感謝任何人的幫助!

回答

7

可以使用ANDOR在你ON條款multiple conditions

select i.InvoiceNum 
from invoice i 
left outer join ship s on i.OrderNum = s.OrderNum 
    and i.InvoiceDate = s.ShipDate 
where s.OrderNum is null 

SQL Fiddle Example

+0

好極了!那正是我需要的!謝謝!我的問題是我試圖通過JOIN子句中的日期範圍進行匹配。我不需要那樣做......只在WHERE子句中。當我在你的例子中進行日期檢查時,並將WHERE子句中的NULL檢查完全按照我需要的方式工作。 – kheugel