2015-11-07 63 views

回答

2

您可以group byhaving做到這一點:

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

很好的解決方案!謝謝! – Sild

0

一種方式來做到這一點是:

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');'祝你好運! –

0

這應該工作:

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

相關問題