繁体   English   中英

选择多值SQL

[英]Select Multiple Values SQL

我有一张表,数据如下

ID Classroom Person
1   1         Alfred
2   1         Maria
3   2         Maria
4   2         Zoe
5   2         Alfred
6   3         Nick
7   3         Paul
8   3         Mike
9   3         Alfred
10  4         Zoe
11  4         Maria

我只想选择并返回仅具有“ Alfred”和“ Maria”作为“人”角色的教室,其内容如下:

Select * from table_name where (Person='maria') and (Person=Alfred')

似乎不起作用。

您可以在此处看到一个SQL Fiddle

您可以使用group byhaving

select classroom
from table t
group by classroom
having count(*) = 2 and
       sum(person in ('maria', 'Alfred')) = 2;

假设一个人不能多次进入教室。

这将检查教室中是否有两个名称,它们是否代表感兴趣的两个名称。 如果可以重复,则需要:

having count(distinct name) = 2 and
       count(distinct case when person in ('maria', 'Alfred') then person end) = 2;

尝试这个。 Group by and havingCount工作。

SELECT Classroom
FROM   tablename
WHERE  Person IN( 'maria', 'Alfred' )
GROUP  BY classroom
HAVING Count(Person) = 2 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM