如何在sql ce数据库查询中使用“where not in”?

时间:2013-04-30 10:21:42

标签: sql sql-server-ce

我正在使用SQL Server和SQL CE 我正在尝试制作一个简单的子查询

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

,但它不适用于SQL CE !!

为此做任何解决方法?

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分: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)