2013-06-19 30 views
0

我有如下表:重新分類表中的一列字段根據標準

person  drug 
------  ----- 
1   Y 
2   Y 
2   other 
3   X 
4   X 
5   X 
5   other 
6   other 
7   Z 

但是,如果有一個人,他們有一個藥物x,y,z(也只會是一個不同的選擇)加「其他」 - 那麼我想刪除包含其他

行這意味着,有人用「X」和「其他」將刪除該行conatining「其他」,但只有「其他」的人將保持'其他'。即

person  drug 
------  ----- 
1   Y 
2   Y 
3   X 
4   X 
5   X 
6   other 
7   Z 

其中人6只已其他,所以保持這樣,但人2和5具有除去「其他」的行,因爲它們具有其它藥物的選擇(X,Y或Z)。

非常感謝您的幫助。

+0

。 。爲什麼這個標籤爲MySQL和DB2? –

回答

1

目前還不清楚您是否希望在查詢結果或數據本身中將其刪除。爲了不此行從查詢,可以這樣寫返回結果:

select t.* 
from t 
where not (t.drug = 'other' and 
      exists (select 1 from t t2 where t2.person = t.person and t2.drug = 'x') 
     ) 

處理任何「X」,「Y」,或「Z」,最後聲明更改爲t2.drug in ('x', 'y', 'z')

+0

我無法得到這個爲我工作。它返回相同的表格。也許我忽略了代碼中的某些東西,所以我會繼續嘗試。 – brucezepplin

+0

@brucezepplin。 。 。我的錯。子查詢在'drug'上有錯誤的別名。固定。 –

+0

完全沒有問題。我應該自己發現了這一點。現在所有的作品。謝謝你的幫助。 – brucezepplin

相關問題