Sql 根据条件对表的一列中的字段重新分类

Sql 根据条件对表的一列中的字段重新分类,sql,db2,Sql,Db2,我有下表: person drug ------ ----- 1 Y 2 Y 2 other 3 X 4 X 5 X 5 other 6 other 7 Z 但是,如果有人服用药物x,y,z(这将只是一个不同的选择)加上“other”-那么我想删除包含other的行 这意味着

我有下表:

person       drug
------       -----
1            Y
2            Y
2            other
3            X
4            X
5            X
5            other
6            other
7            Z
但是,如果有人服用药物
x,y,z
(这将只是一个不同的选择)加上“other”-那么我想删除包含other的行

这意味着带有“X”和“other”的人将删除包含“other”的行,但只有“other”的人将保留为“other”。i、 e

person       drug
------       -----
1            Y
2            Y
3            X
4            X
5            X
6            other
7            Z
其中,第6人只有其他药物,因此保持这种状态,但第2人和第5人删除了“其他”行,因为他们有其他药物选择(x、y或z)


非常感谢您的帮助。

不清楚您是希望在查询结果中还是在数据本身中删除此项。要从查询中返回不带此行的结果,可以这样编写:

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')
。为什么对MySQL和DB2都加上标签?我无法让它对我起作用。它返回相同的表。也许我忽略了你代码中的某些内容,所以我会继续尝试。@brucezepplin。是我的错。子查询在
drug
上的别名错误。修正了,没问题。我应该自己发现的。现在一切都好了。谢谢你的帮助。