MySQL:当特定类型的记录为';t在另一张桌子上

MySQL:当特定类型的记录为';t在另一张桌子上,mysql,outer-join,Mysql,Outer Join,我的大脑在这件事上变得一团糟,但我怀疑有一个简单的答案 我有一张戏剧表演表,还有一张对这些表演的评论表。评论有一个标志,表示评论是内部评论还是观众评论,即1表示内部评论,0表示观众评论 现在,我想做的是返回所有没有内部审查的节目。我尝试了以下方法,但没有结果(显然是因为我认为r.id为NULL,r.author=1) 如果我去掉r.author=1,那么我会得到结果,但如果有观众评论,则会出现误报。将ON子句中的r.author=1转移到筛选表评论中,然后再加入显示 SELECT s.title

我的大脑在这件事上变得一团糟,但我怀疑有一个简单的答案

我有一张戏剧表演表,还有一张对这些表演的评论表。评论有一个标志,表示评论是内部评论还是观众评论,即1表示内部评论,0表示观众评论

现在,我想做的是返回所有没有内部审查的节目。我尝试了以下方法,但没有结果(显然是因为我认为r.id为NULL,r.author=1)


如果我去掉r.author=1,那么我会得到结果,但如果有观众评论,则会出现误报。

ON
子句中的
r.author=1
转移到筛选表
评论中,然后再加入
显示

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
的区别在于
ON
在加入另一个表之前过滤特定表中的行,而
WHERE
在加入表之后过滤结果。

先生,您是个天才。非常感谢。
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