sql 中如何删除其中一个表中跟另一个表字段内容重复的行?

如果有a,b两个表,都有username和email 这两个字段,a表中有的email是和b表相同的,但username不同,如果想删除a表中这些行,sql语句怎么写呢?

如果是删除单个字段重复可用in,如果是删除多个字段重复可用exists。

如表1数据:

id        name          age

1          å¼ ä¸‰             19

2          æŽå››             20

3          çŽ‹äº”             17

4          èµµå…­             21


表2数据:

id        name          age

1          å¼ ä¸‰             19

2          æŽå››             21

5          çŽ‹äº”             14



如果删除表1中id和表2相同的内容:

delete from è¡¨1 where id in (select id from è¡¨2)

如果删除表1中id,name和age都与表2相同的数据

delete from è¡¨1 where exists (select 1 from è¡¨2 where è¡¨1.id=表2.id and è¡¨1.name=表2.name and è¡¨1.age=表2.age)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-16
delete from a where a.email in (
select a.email from a, b where a.email = b.email and a.username != b.username
)本回答被提问者和网友采纳
第2个回答  2012-11-16
用in的话性能很差的,可以用delete from a inner join b on a.email=b.email where a.username <> b.username
第3个回答  2012-11-16
delete from a a where a.email in (select email from b)
第4个回答  2012-11-16
delete from a a where a.email =(select email from b)
相似回答