SQL Server と SQL CE を使用しています。単純なサブクエリを作成しようとしています。
Select * From Item_Lots where Distribution_Code NOT IN
(select Distribution_Code from Stock_Serials)
、しかし、SQL CE では動作しません!!
これに対する回避策はありますか?
SQL Server と SQL CE を使用しています。単純なサブクエリを作成しようとしています。
Select * From Item_Lots where Distribution_Code NOT IN
(select Distribution_Code from Stock_Serials)
、しかし、SQL CE では動作しません!!
これに対する回避策はありますか?
これが 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
)
参考:NOT IN、OUTER APPLY、LEFT OUTER JOIN、EXCEPT、NOT EXISTSのどれを使うべき?
これは少し遅れていることはわかっていますが、Distribution_Code は null 可能ですか?
= は Sql Compact で null 比較を実行できないため、同じ問題に遭遇しました。内部クエリから null 値を除外すると、これが解決されました
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)