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;