Php 选择多个SQL值

Php 选择多个SQL值,php,mysql,sql,select,Php,Mysql,Sql,Select,我有一个数据如下的表格 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 我

我有一个数据如下的表格

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')
似乎不起作用

你可以试试这个。分组和计数应该有效

SELECT Classroom
FROM   tablename
WHERE  Person IN( 'maria', 'Alfred' )
GROUP  BY classroom
HAVING Count(Person) = 2 
试试这个。分组和计数应该有效

SELECT Classroom
FROM   tablename
WHERE  Person IN( 'maria', 'Alfred' )
GROUP  BY classroom
HAVING Count(Person) = 2 
您可以使用group by并具有:

这假设一个人不能在教室里多次

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

having count(distinct name) = 2 and
       count(distinct case when person in ('maria', 'Alfred') then person end) = 2;
您可以使用group by并具有:

这假设一个人不能在教室里多次

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

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


你做了什么努力?那么,你是在试图得到阿尔弗雷德和玛丽亚所在教室的教室号码吗?当然,这是行不通的。一个人不可能同时成为“阿尔弗雷德”和“玛丽亚”。您希望它是“Alfred”或“Maria”。这是一个合理但非常基本的问题,想知道为什么会有否决票吗?@user3677132您可以包括所需的输出吗?您做了哪些努力?那么您是否试图获取该教室Alfred和Maria行都存在的教室编号?当然,这不起作用。一个人不可能同时成为“阿尔弗雷德”和“玛丽亚”。你希望它是“阿尔弗雷德”或“玛丽亚”。这是一个合理但非常基本的问题,想知道为什么会有否决票吗?@user3677132你能包括所需的输出吗?不太正确。OP似乎只想要这两个名字在教室里。@GordonLinoff-对不起,我没听清楚。甚至我的查询也在做同样的事情。您的查询将选择教室=2,因为这两个名称都有,即使它也有Zoe。我修复了您的SQL FIDLE,将数据放在OP中以演示问题:。但简单地说,where是在have之前执行的,因此have中永远不会考虑其他名称。你的问题是对一个非常相似的问题的正确回答。@GordonLinoff-是的,先生,你是对的。谢谢你让我明白不太对。OP似乎只想要这两个名字在教室里。@GordonLinoff-对不起,我没听清楚。甚至我的查询也在做同样的事情。您的查询将选择教室=2,因为这两个名称都有,即使它也有Zoe。我修复了您的SQL FIDLE,将数据放在OP中以演示问题:。但简单地说,where是在have之前执行的,因此have中永远不会考虑其他名称。你的问题是对一个非常相似的问题的正确回答。@GordonLinoff-是的,先生,你是对的。谢谢你让我明白,经过一次快速测试,它似乎起作用了。非常感谢戈登。经过快速测试后,它似乎开始工作了。非常感谢,戈登。