2013-04-30 137 views
1

我與SQL Server和SQL CE 我試圖做一個簡單的子查詢如何在sql ce數據庫查詢中使用「where not in」?

Select * From Item_Lots where Distribution_Code NOT IN 
(select Distribution_Code from Stock_Serials) 

工作,但它不會對SQL CE工作!

任何解決此問題的方法?

+0

什麼不起作用?你有錯誤信息嗎? – 2013-04-30 10:26:22

回答

0

我不知道這是否適用於SQL CE,但它是替代NOT IN SQL的標準方法。

SELECT Item_Lots.* 
FROM Item_Lots 
    LEFT OUTER JOIN Stock_Serials 
     ON Item_Lots.Distribution_Code = Stock_Serials.Distribution_Code 
WHERE Stock_Serials.Distribution_Code IS NULL 

你也可以試試這個:

SELECT * 
FROM Item_Lots 
WHERE NOT EXISTS 
(
    SELECT * 
    FROM Stock_Serials 
    WHERE Stock_Serials.Distribution_Code = Item_Lots.Distribution_Code 
) 

參考:Should I use NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT, or NOT EXISTS?

+0

兩者都像魅力!謝謝Scorpi0 – Tarreq 2013-04-30 10:34:13

0

我知道這是有點晚了,但Distribution_Code可空?

我遇到了同樣的問題,因爲=無法在Sql Compact中進行空比較。從內部查詢中篩選出空值解決了這個問題

SELECT * FROM Item_Lots WHERE Distribution_Code NOT IN 
(SELECT Distribution_Code FROM Stock_Serials WHERE Distribution_Code IS NOT NULL GROUP BY Distribution_Code)