我正在使用SQL Server和SQL CE 我正在尝试制作一个简单的子查询
Select * From Item_Lots where Distribution_Code NOT IN
(select Distribution_Code from Stock_Serials)
,但它不适用于SQL CE !!
为此做任何解决方法?
答案 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)