选择符合多个条件的行
Posted
技术标签:
【中文标题】选择符合多个条件的行【英文标题】:Select rows that match several conditions 【发布时间】:2016-11-06 10:37:59 【问题描述】:我有一张桌子pupil_teachers
像这样
+------+----------+------------+
| id | pupil_id | teacher_id |
+------+----------+------------+
| 1 | 100 | 200 |
| 2 | 101 | 200 |
| 3 | 102 | 200 |
| 4 | 102 | 201 |
| 5 | 101 | 201 |
| 6 | 101 | 202 |
| 7 | 103 | 200 |
+------+----------+------------+
查询将检索学生 100、101 和 102 共有的所有教师。所以在这种情况下,它只会是 id 为 200 的老师。
103 号学生也有 id 为 200 的老师,但不是查询的一部分,我只想查询 100、101 和 102 号学生。
所以它会开始:
SELECT teacher_id
FROM pupil_teachers
WHERE
我真的不知道下一步该去哪里。显然以下是不正确的
SELECT teacher_id
FROM pupil_teachers
WHERE pupil_id IN (100, 101, 102)
【问题讨论】:
【参考方案1】:这是使用Group By
和Having
子句的一种方式
SELECT teacher_id
FROM pupil_teachers
WHERE pupil_id IN (100, 101, 102)
Group by teacher_id
Having Count(Distinct pupil_id) = 3
另一种方式
SELECT teacher_id
FROM pupil_teachers
Group by teacher_id
Having Count(Case when pupil_id = 100 then 1 end) > 0
AND Count(Case when pupil_id = 101 then 1 end) > 0
AND Count(Case when pupil_id = 102 then 1 end) > 0
【讨论】:
非常感谢!像魅力一样工作。我确实找到了与您的第一个类似的解决方案,尝试过,但我必须有某种错误,因为它不起作用,哈哈。谢谢!我会尽快接受!以上是关于选择符合多个条件的行的主要内容,如果未能解决你的问题,请参考以下文章
excel怎么以多个数值范围为条件,然后选择一行,挑选出符合条件的,将其显示在另一行?