如何根据多行字段选择数据

时间:2010-01-11 08:05:45

标签: mysql select

我有一张这样的桌子:

+------------------------+
|Key| value | name       |   
+---+-------+------------+      
  1     A       john    
  2     B       Mary    
  3     C       Ben    
  4     A       Ben    
  5     B       john    
  6     C       Mary

我怎样才能选择哪个返回值为“A”和“B”的人(在这种情况下,只有“john”)

我现在有这个丑陋的sql ..

SELECT * FROM table where value="A" or value="B" group by name having count(name) >1 ;

有人可以告诉我更优雅的方式吗?

2 个答案:

答案 0 :(得分:2)

这个怎么样:

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

答案 1 :(得分:1)

你的答案根本不是那么混乱。但是,您无法为键选择有意义的值,并且知道您在键中要查找的值。所以它可以更整洁地写成


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

可以轻松扩展到任意数量的值甚至是y键的x。