[英]Multiple rows with 2 condition in the same column MySQL
如何在同一列 MySQL 中選擇具有 2 個條件的多行
學生表:
id name
1 Jhon
2 Anne
3 Charles
4 Bob
Lesson_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。 所以結果應該是約翰和查爾斯
您可以通過兩次加入課程lesson_contract
表來完成此操作,每個課程代碼一次:
SELECT s.id, s.name FROM students s
INNER JOIN lesson_contract l1
ON s.id = l1.student_id AND l1.lesson_code = 'L1'
INNER JOIN lesson_contract l2
ON s.id = l2.student_id AND l2.lesson_code = 'L2'
內部聯接將過濾結果,因此您只會獲得同時滿足兩個聯接條件的行。
您必須加入表, 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 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.