1
我有2個Informix查詢,我認爲應該返回相同的數據但不要。第一個查詢使用子查詢作爲過濾器,並且不正確地返回任何行。第二個是使用左外連接檢查子查詢中使用的同一列上的null,並正確返回正確的數據集。我錯過了什麼或者這是一個錯誤?2查詢應該返回相同的數據,但不要
select i.invoice_date, oe.commit_no
from oe
join invoice i
on oe.invoice_no = i.invoice_no
where i.invoice_date > today - 60
and oe.commit_no not in (select commit_no from bolx)
select i.invoice_date, oe.commit_no, bolx.bol_no
from oe
join invoice i
on oe.invoice_no = i.invoice_no
left join bolx
on bolx.commit_no = oe.commit_no
where i.invoice_date > today - 60
and bolx.commit_no is null
縮模式(這是一個傳統的數據庫,所以它有一些怪癖):
invoice
invoice_no char(9),
invoice_date date
oe
commit_no decimal(8, 0),
invoice_no char(9)
bolx
commit_no decimal(8, 0)
情況就是這樣。謝謝。我已將我的應用切換到第二種形式。 – 2011-04-21 23:20:48
這種行爲並不是Informix特有的 - 它適用於任何SQL數據庫。 – 2011-04-25 00:26:36