2017-08-07 48 views
0

我想拉出數字1或8被隔離加載的名稱,但查詢不這樣做。查詢不在幫助

所以想看到的名字只有8個或只有1,但不能同時

CREATE TABLE Table1 
    (`name` varchar(7), `number` int); 

INSERT INTO Table1 
    (`name`, `number`) 
VALUES 
    ('renee', 1), 
    ('renee', 8), 
    ('eugene', 1), 
    ('jacques', 1), 
    ('jacques', 8), 
    ('avril', 8); 

SELECT Name FROM Table1 WHERE Number IN ('1') 
AND Number NOT IN ('8') 

回答

4

接近,這可能是由名聚集,限制爲1個或8號值,然後保留最簡單的方法只有名字有一個不同的數字。

SELECT Name 
FROM Table1 
WHERE Number IN (1, 8) 
GROUP BY Name 
HAVING COUNT(DISTINCT Number) = 1 
+1

嗯......爲什麼COUNT(DISTINCT NAME)= 1'?該查詢將顯示所有行。 – Rokuto

+1

我猜這只是一個錯字。應該是「不同的數字」... –

+0

真的很醜的錯字...對不起 –

1

以下查詢不正是有人問,它可能無法例如工作,如果記錄(名稱,編號)不是唯一的=1可能會更改爲>=1

SELECT Name FROM Table1 WHERE Number in (1,8) 
group by name 
having count(case when number=1 then 1 end)=1 
and count(case when number=8 then 1 end)=0 
or count(case when number=1 then 1 end)=0 
and count(case when number=8 then 1 end)=1 
+0

查詢效果很好! – Jacques