MySQL:当特定类型的记录为';t在另一张桌子上
我的大脑在这件事上变得一团糟,但我怀疑有一个简单的答案 我有一张戏剧表演表,还有一张对这些表演的评论表。评论有一个标志,表示评论是内部评论还是观众评论,即1表示内部评论,0表示观众评论 现在,我想做的是返回所有没有内部审查的节目。我尝试了以下方法,但没有结果(显然是因为我认为r.id为NULL,r.author=1)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
如果我去掉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