有人可以解釋爲什麼最後一條語句沒有列出所有位於#inv_item但不在salesMasterDET中的ST項目嗎?我使用的是SQL 2008 R2WHERE xxx NOT IN ...不返回任何東西
如果我填充一個臨時表: SELECT DISTINCT(產品代碼)INTO #smd_item FROM salesMasterDET 我運行相同的選擇,S1-S4但與臨時表,一切工作正常。
S1:SELECT DISTINCT(項目)FROM #inv_item
S2:SELECT DISTINCT(產品代碼)FROM salesMasterDET
S3:SELECT DISTINCT(項目)FROM #inv_item其中項目IN(SELECT的ProductCode FROM salesMasterDET)
S4:SELECT DISTINCT(項目)FROM #inv_item其中項目NOT IN(SELECT ProductCode與salesMasterDET)
結果:
S1:ST01 ST02 ST03 ST04 ST05 ST11 ST12
S2:ST04 ST12
S3:ST04 ST12
S4:(沒有結果)(期望ST01,ST 02,,,ST11)
如果您運行查詢'SELECT * FROM salesMasterDET WHERE ProductCode IS NULL'是否返回任何結果?如果是這樣,那就是問題所在。與'NULL'相比,沒有值會從'NOT IN'返回。您可以將查詢更改爲'SELECT DISTINCT(Item)FROM #inv_item其中,商品NOT IN(SELECT ProductCode FROM salesMasterDET WHERE ProductCode IS NOT NULL)' – 2015-03-03 03:40:38
我通常從這些表中刪除空值,並沒有考慮到它的結尾,但有空值。問題解決了。簡單的答案和理由。謝謝阿德里安。 – user3651072 2015-03-03 20:25:21