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

如果有a,b两个表,都有username和email这两个字段,a表中有的email是和b表相同的,但username不同,如果想删除a表中这些行,sql语句怎么写呢?... 如果有a,b两个表,都有username和email 这两个字段,a表中有的email是和b表相同的,但username不同,如果想删除a表中这些行,sql语句怎么写呢? 展开
 我来答
badkano
2015-08-01 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

如果是删除单个字段重复可用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)
斯吾爱
2012-11-16 · 超过32用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:89.1万
展开全部
delete from a where a.email in (
select a.email from a, b where a.email = b.email and a.username != b.username
)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-11-16
知道答主
回答量:11
采纳率:0%
帮助的人:9918
展开全部
用in的话性能很差的,可以用delete from a inner join b on a.email=b.email where a.username <> b.username
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gyogh
2012-11-16 · TA获得超过267个赞
知道小有建树答主
回答量:561
采纳率:33%
帮助的人:142万
展开全部
delete from a a where a.email in (select email from b)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
睢鸠铌衲3o
2012-11-16 · TA获得超过114个赞
知道答主
回答量:82
采纳率:0%
帮助的人:25.3万
展开全部
delete from a a where a.email =(select email from b)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式