sql 中如何删除其中一个表中跟另一个表字段内容重复的行?
如果有a,b两个表,都有username和email这两个字段,a表中有的email是和b表相同的,但username不同,如果想删除a表中这些行,sql语句怎么写呢?...
如果有a,b两个表,都有username和email 这两个字段,a表中有的email是和b表相同的,但username不同,如果想删除a表中这些行,sql语句怎么写呢?
展开
6个回答
展开全部
如果是删除单个字段重复可用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)
展开全部
delete from a where a.email in (
select a.email from a, b where a.email = b.email and a.username != b.username
)
select a.email from a, b where a.email = b.email and a.username != b.username
)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用in的话性能很差的,可以用delete from a inner join b on a.email=b.email where a.username <> b.username
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete from a a where a.email in (select email from b)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete from a a where a.email =(select email from b)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询