如何选择行时列必须满足多个值?
问题描述:
例如,我有一个表如何选择行时列必须满足多个值?
name | ability
kevin|say
kevin|scream
nike |say
我想只得到响应凯文,寻找say
和scream
时。参数计数可能会改变。
答
您可以group by
和having
做到这一点:
SELECT name
FROM t
WHERE ability in ('say', 'scream')
GROUP BY name
HAVING COUNT(*) = 2;
答
一种方式来做到这一点是:
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
很好的解决方案!谢谢! – Sild