-1

JOIN ステートメントで NOT IN を機能させるにはどうすればよいですか? 以下は私のクエリです:

SELECT A.*
FROM products A 
LEFT OUTER JOIN productmeta B ON A.id=B.product_id 
WHERE(B.group_id IS NULL OR B.group_id=0) 
AND  (B.collection_id IS NULL OR B.collection_id=0)
AND   B.id NOT IN (SELECT collection_id FROM collections)
4

1 に答える 1

2

問題は第3節だと思います。 NULL常に失敗の原因になります。しかし、それは簡単にテストできます:

SELECT A.*
FROM products A LEFT OUTER JOIN 
     productmeta B 
     ON A.id=B.product_id 
WHERE (B.group_id IS NULL OR B.group_id=0) AND
      (B.collection_id IS NULL OR B.collection_id=0) AND
      (B.ID is NULL or B.id NOT IN (SELECT collection_id FROM collections));

私はそれらを変更しませんでしたpが、 のより良いエイリアスproductspmのより良いエイリアスになりproductmetaます。

于 2013-05-24T02:47:12.447 に答える