MySQL-带WHERE子句的内部连接
我在查找条件为的记录时遇到问题。我想找到所有有国旗的球场 课程表的记录: 课程标志表的记录: 我的第一个问题是:好 数据库返回:MySQL-带WHERE子句的内部连接,mysql,sql,join,Mysql,Sql,Join,我在查找条件为的记录时遇到问题。我想找到所有有国旗的球场 课程表的记录: 课程标志表的记录: 我的第一个问题是:好 数据库返回: +----+-----------------+ | id | name | +----+-----------------+ | 1 | JPA Lorem ipsum | +----+-----------------+ null 我的第二个问题是两个条件:坏? 数据库返回: +----+-----------------+ | id
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | JPA Lorem ipsum |
+----+-----------------+
null
我的第二个问题是两个条件:坏?
数据库返回:
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | JPA Lorem ipsum |
+----+-----------------+
null
我希望收到:
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | JPA Lorem ipsum |
+----+-----------------+
问题:我如何得到它
提前谢谢 我怀疑您想要提供所有标志的所有课程
SELECT c.id, c.name
FROM course AS c
INNER JOIN course_flags AS cf
ON c.id = cf.course_id
WHERE cf.flags_id = 1
OR cf.flags_id = 2
您可以通过向联接添加或条件,然后按预期检查标志的数量来完成此操作:
SELECT `course`.`id`, `course`.`name` FROM `course`
INNER JOIN `course_flags`
ON `course` .`id` = `course_flags`.`course_id`
AND (`course_flags`.`flags_id` = 1 OR `course_flags`.`flags_id` = 2)
WHERE
GROUP BY (course.id)
HAVING COUNT(DISTINCT course_flags.id) = 2;
我怀疑您想要所有提供了所有标志的课程 您可以通过向联接添加或条件,然后按预期检查标志的数量来完成此操作:
SELECT `course`.`id`, `course`.`name` FROM `course`
INNER JOIN `course_flags`
ON `course` .`id` = `course_flags`.`course_id`
AND (`course_flags`.`flags_id` = 1 OR `course_flags`.`flags_id` = 2)
WHERE
GROUP BY (course.id)
HAVING COUNT(DISTINCT course_flags.id) = 2;
确切地多谢各位@Piotr没问题,很乐意帮忙。没错!多谢各位@没问题,很乐意帮忙。
SELECT `course`.`id`, `course`.`name` FROM `course`
INNER JOIN `course_flags`
ON `course` .`id` = `course_flags`.`course_id`
AND (`course_flags`.`flags_id` = 1 OR `course_flags`.`flags_id` = 2)
WHERE
GROUP BY (course.id)
HAVING COUNT(DISTINCT course_flags.id) = 2;