0

私の脳はこれについてぐちゃぐちゃになっていますが、簡単な答えがあると思います.

私は劇場ショーの表を持っており、それらのショーのレビューの表も持っています. レビューには、レビューがインハウス レビューかオーディエンス レビューかを示すフラグがあります。つまり、インハウスの場合は 1、オーディエンスの場合は 0 です。

ここで、私がやりたいことは、社内レビューがないすべての番組を返すことです。次のことを試しましたが、結果はありませんでした (明らかに、r.id が NULL で r.author = 1 と競合しているため)

     SELECT s.title FROM shows s LEFT OUTER JOIN reviews r ON s.id = r.showid WHERE r.id is NULL AND r.author = 1

r.author = 1 を外すと結果が得られますが、オーディエンス レビューがある場合は誤検知になります。

4

1 に答える 1

2

と結合する前に、最初に句をフィルタ テーブルに転送r.author = 1します。ONreviewsshows

SELECT s.title 
FROM   shows s 
       LEFT OUTER JOIN reviews r 
          ON s.id = r.showid AND 
             r.author = 1
WHERE  r.showid is NULL 

ONとの違いは、他のテーブルに結合する前に特定のテーブルの行をフィルター処理するのに対しWHERE、テーブルが結合された後に結果をフィルター処理することです。ONWHERE

于 2013-04-12T16:26:16.320 に答える