MYSQL连接困惑

标签 mysql sql join aggregate-functions

我有这个考试表和回复表。我想获取 Exam for exam = 000663 的所有记录

SELECT COUNT(*)
  FROM Responses r  
  JOIN Exams E ON r.category_id_fk = E.id 
              AND r.exam_id_fk = 000663

实际上总共有 106 行仅包含考试 000663 的响应。但它返回所有考试的所有响应行!它不应该考虑 r.exam_id_fk = 000663 吗?​​

我没有使用 where 子句,因为我有 3 个其他表加入此查询。

最佳答案

000663 条件属于 WHERE 子句,而不属于 JOIN 关系条件。即使您有其他表加入(作为子查询),您仍然可以使用 WHERE 子句。

select count(*)
from  Responses r  
join Exams E on r.category_id_fk = E.id 
WHERE r.exam_id_fk=000663;

关于MYSQL连接困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7768512/

相关文章:

php - 在 mysql 中为用户获取每场比赛的前 3 名结果

php - 如何安全地转义 php for mysql 中的输入数据

mysql - SQL 填充键/值表

mySQL LIKE 管道上的查询

mysql - 基于另一个选择的左连接在左连接命令中返回 0

mysql - 如何优化这个数据库操作?

MySQL Router 8.0.19 引导由于缺少权限而失败

mysql - 用于匹配卖家和买家的 SQL 查询

Sql:两个日期之间的差异

mysql - Sql GROUP BY 与数组冲突