2014-03-25 72 views
0

我使用SQL Server 2008,並試圖如下實現:SQL SELECT語句排除相同的行具有不同值

現有表:

+--------+-------------+--------+ 
| ID  | COUNTRY  | STATUS | 
+--------+-------------+--------+ 
| 1  | UK   | 0 | 
| 2  | UK   | 1 | 
| 3  | USA   | 0 | 
| 4  | Greece  | 0 | 
| 5  | Italy  | 1 | 
+-------------------------------+ 

我想,來查詢STATUS = 0,同時排除所有的行,如果同一個國家有兩種不同的狀態(在我的情況排除英國上表)

預期結果:

+--------+-------------+--------+ 
| ID  | COUNTRY  | STATUS | 
+--------+-------------+--------+ 
| 3  | USA   | 0 | 
| 4  | Greece  | 0 | 
+-------------------------------+ 

在此先感謝!

+1

你有嘗試過什麼嗎?這不是一個「爲我工作」的事情,你知道。 – TigOldBitties

+0

對不起,SQL初學者,嘗試了很多,我自己卻沒有運氣,這就是我在這裏的原因。 –

+0

如果你需要做這樣的查詢,你可能會有嚴重的問題在你的數據庫設計。你應該審查。 – Twinkles

回答

0

試試這個

SELECT * 
FROM Table1 
WHERE STATUS = 0 AND 
Country NOT IN (SELECT Country FROM Table1 WHERE Status = 1) 

Fiddle Demo

Outpit:

+--------+-------------+--------+ 
| ID  | COUNTRY  | STATUS | 
+--------+-------------+--------+ 
| 3  | USA   | 0 | 
| 4  | Greece  | 0 | 
+-------------------------------+ 
1

請嘗試:

select * From tbl x 
where STATUS=0 and 
    (select COUNT(*) from tbl y 
    where y.COUNTRY=x.COUNTRY and y.STATUS=1)=0 
相關問題