Mysql 如何根据多行选择数据';s场

Mysql 如何根据多行选择数据';s场,mysql,select,Mysql,Select,我有一张这样的桌子: +------------------------+ |Key| value | name | +---+-------+------------+ 1 A john 2 B Mary 3 C Ben 4 A Ben 5 B john 6 C Mary 如何选择

我有一张这样的桌子:

+------------------------+
|Key| value | name       |   
+---+-------+------------+      
  1     A       john    
  2     B       Mary    
  3     C       Ben    
  4     A       Ben    
  5     B       john    
  6     C       Mary
如何选择返回值为“a”和“B”的用户(在本例中,仅为“john”)

我现在有一个丑陋的

SELECT * FROM table where value="A" or value="B" group by name having count(name) >1 ;
有人能告诉我一种更优雅的方式吗?

这个怎么样:

select distinct t1.name from tab t1, tab t2 
where t1.name = t2.name and 
t1.value='A' and t2.value='B';
这个怎么样:

select distinct t1.name from tab t1, tab t2 
where t1.name = t2.name and 
t1.value='A' and t2.value='B';

你的答案一点也不混乱。不过,您不能为键选择有意义的值,也不能知道要在键中查找哪些值。所以它可以写得更简洁一些


SELECT name
 FROM table
 WHERE key IN ('A', 'B')
 GROUP BY name
 HAVING COUNT(*) = 2

它可以很容易地扩展到任意数量的值,甚至x个y键。

你的答案一点也不凌乱。不过,您不能为键选择有意义的值,也不能知道要在键中查找哪些值。所以它可以写得更简洁一些


SELECT name
 FROM table
 WHERE key IN ('A', 'B')
 GROUP BY name
 HAVING COUNT(*) = 2
它可以轻松地缩放到任意数量的值,甚至可以缩放到x/y键