MySQL-使用WHERE子句的内部联接

皮特

我在查找有条件的记录时遇到了问题。我想找到所有带有标志的课程。

课程记录

+----+------+-----------------+
| id | code |      name       |
+----+------+-----------------+
| 1  | JPA  | JPA Lorem ipsum |
| 2  | JSF  | Jsf lorem ipsum |
+----+------+-----------------+

course_flags表的记录

+----+-----------+---------+
| id | course_id | flag_id |
+----+-----------+---------+
| 1  | 1         | 1       |
| 2  | 1         | 2       |
+----+-----------+---------+

我的第一个查询:(好)

 SELECT `course`.`id`, `course`.`name`  FROM `course` 
 INNER JOIN `course_flags`
 ON `course` .`id` = `course_flags`.`course_id`
 WHERE (`course_flags`.`flags_id` = 1)

数据库返回:

+----+-----------------+
| id |      name       |
+----+-----------------+
| 1  | JPA Lorem ipsum |
+----+-----------------+

我的第二个查询有两个条件:(不好?)

 SELECT `course`.`id`, `course`.`name`  FROM `course` 
 INNER JOIN `course_flags`
 ON `course` .`id` = `course_flags`.`course_id`
 WHERE (`course_flags`.`flags_id` = 1 and `course_flags`.`flags_id` = 2)

数据库返回:

null

我想收到:

+----+-----------------+
| id |      name       |
+----+-----------------+
| 1  | JPA Lorem ipsum |
+----+-----------------+

问题我如何得到?

提前致谢!

吉姆

我怀疑您想要提供所有标志的所有课程。

您可以通过在联接中添加一个或条件,然后检查标志的数量是否符合您的期望来做到这一点:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MYSQL内部联接错误-'where子句'中的未知列'm.account_no'

来自分类Dev

MySQL表使用where子句联接

来自分类Dev

mysql内部联接查询

来自分类Dev

多个内部联接-MySQL

来自分类Dev

MySQL多个内部联接

来自分类Dev

使用where子句删除MySQL行

来自分类Dev

MySQL查询与内部联接

来自分类Dev

使用where子句更新2个表的内部联接

来自分类Dev

MySQL-使用WHERE子句将内部连接到同一表

来自分类Dev

SQL内部联接的where子句

来自分类Dev

MySQL内部联接更新

来自分类Dev

使用WHERE子句的MySQL LEFT JOIN查询

来自分类Dev

使用内部联接的MySQL查询

来自分类Dev

使用内部联接在mysql上查询

来自分类Dev

在Where子句中使用Mysql变量

来自分类Dev

使用内部联接MYSQL联接多个表

来自分类Dev

MySQL优化使用WHERE子句的子查询?

来自分类Dev

mysql where子句使用“ IN”或多个“ OR”

来自分类Dev

MySQL多个内部联接

来自分类Dev

在mysql中使用内部联接和别名

来自分类Dev

左侧联接的where子句中的mysql查询错误

来自分类Dev

使用where子句更新2个表的内部联接

来自分类Dev

带where子句的内部联接

来自分类Dev

mysql,多个表使用WHERE子句联接

来自分类Dev

防止在MySQL中使用内部联接将左联接重复

来自分类Dev

MYSQL在WHERE子句中使用别名

来自分类Dev

在 WHERE 子句中使用 MySQL 变量

来自分类Dev

if else 在 mysql where 子句中使用

来自分类Dev

MYSQL - 更新/内部联接