如何选择行时列必须满足多个值?

问题描述:

例如,我有一个表如何选择行时列必须满足多个值?

name | ability 

kevin|say 
kevin|scream 
nike |say 

我想只得到响应凯文,寻找sayscream时。参数计数可能会改变。

您可以group byhaving做到这一点:

SELECT name 
FROM t 
WHERE ability in ('say', 'scream') 
GROUP BY name 
HAVING COUNT(*) = 2; 
+0

很好的解决方案!谢谢! – Sild

一种方式来做到这一点是:

SELECT * FROM YourTableName WHERE name='kevin' AND ability IN ('say','scream'); 

另一种方式来做到这一点:

SELECT * FROM YourTableName WHERE name='kevin' AND (ability='say' || ability='scream'); 

祝你好运!

+0

当然我查询执行之前都没有名字的价值。 – Sild

+0

也许这样吧:'SELECT * FROM YourTableName WHERE ability IN('say','scream');'祝你好运! –

这应该工作:

SELECT name FROM tablename WHERE ability IN ('say', 'scream') GROUP BY name 

或者:

SELECT DISTINCT name FROM tablename WHERE ability IN ('say', 'scream') 

编辑:哦,你要寻找的是具有能力名字......然后,你可以这样做:

SELECT DISTINCT name from tablename WHERE name IN (SELECT name FROM tablename WHERE ability = 'say') AND name IN (SELECT name FROM tablename WHERE ability = 'scream') 

或者更好的是,你可以添加一个HAVING子句第一个查询:

SELECT name FROM tablename WHERE ability IN ('say', 'scream') GROUP BY name HAVING count(*) = 2 
+0

这两个建议返回'kevin'和'nike'。这是正确的,'IN'条件建议逻辑“或”,所以一个能力是满意的。 – Sild

+0

插入选择过于艰苦并且随着条件的增加而变长。主题的解决方案很好,谢谢。 – Sild