簡體   English   中英

同一列 MySQL 中具有 2 個條件的多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM