首页 > 解决方案 > 同一列MySQL中具有2个条件的多行

问题描述

如何在同一列MySQL中选择具有2个条件的多行

学生桌:

id  name
1   Jhon
2   Anne
3   Charles
4   Bob

course_contract 的表格:

id  lesson_code student_id
1   L1          1
2   L2          1
3   L1          2
4   L1          3
5   L2          3
6   L2          4

所以我想让学生同时学习课程代码 L1 和 L2。所以结果应该是 Jhon 和 Charles

标签: mysqlsubquery

解决方案


您必须加入表,group by name并将条件放在having子句中:

select s.name
from student s inner join lesson_contract l
on l.student_id = s.id
where l.lesson_code in ('L1', 'L2')
group by s.name
having count(distinct l.lesson_code) = 2

distinct如果没有情况让学生上同一节课两次,您可以删除。
请参阅演示
结果:

| name    |
| ------- |
| Charles |
| John    |

推荐阅读