请考虑以下场景
我有一张如下表
Tag | Id | Client | ....and more columns
c 30 X
c 40 Y
c 50 X
c 60 A
c 30 B
c 40 C
d 50 D
d 70 E
d 80 X
d 90 Z
i 30 X
i 90 Z
i 100 X
i 40 M
我想以这样的方式从表中选择记录,如果 tag=i 下面的行从结果集中删除
i 30 X
i 90 Z
这是因为 id=90 的行已经出现了 tag=d 和 client=Z。但排
i 40 M
即使 id=40 已经与 client=C 一起出现,也不能删除,因为 client 列值不同。
DELETE FROM myTable
WHERE tag=i AND id IN( SELECT id FROM myTable t1
INNER JOIN myTable t2
ON t1.id=t2.id
WHERE tag=d or tag=c )