MySQL:当特定类型的记录不在另一个表中时如何连接

标签 mysql outer-join

我的大脑正在思考这个问题,但我怀疑有一个简单的答案。

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

现在,我想做的是返回所有没有内部评论的节目。我尝试了以下操作,但没有结果(显然是因为我冲突 r.id is 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,那么我会得到结果,但如果有观众评论,则会出现误报。

最佳答案

在加入 shows 之前,首先在 ON 子句中传输 r.author = 1 以过滤表 reviews .

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 

ONWHERE 之间的区别在于,ON 在加入另一个表之前过滤特定表中的行,而 WHERE 在连接表后过滤结果。

关于MySQL:当特定类型的记录不在另一个表中时如何连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976380/

相关文章:

mysql - 在Mysql中从连接创建表时出错

MySQL 连接查询以创建自定义报告

php - MySQL中如何选取空记录

mysql - 使用 mysql 变量连接

sql-server - FULL OUTER JOIN 真的是一件坏事吗?

mysql : how to retrieve a list of row where one field doesn't contain a specific value from an ENUM

mysql - 具有复合连接条件的 SQL LEFT JOIN 如何工作

javascript - 动态单选按钮表单 react

php - php导出excel文件的问题

MySQL:获取多个表中的孤儿表