删除同样的关键字段的记录

忠向 2006-08-25 10:25:58

表A、B,同样的关键字(key1, key2)
两表中都有若干条记录,
我想把表B中有与表A中关键字相同的那些记录都删除掉,该如何写这个SQL语句,

本来想自己能思考出来,结果闷了1整天,没辙,还是到这里求教,请指点,谢谢
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
忠向 2006-08-25
  • 打赏
  • 举报
回复
多谢两位的启发,尤其小虾米的第二招,我改成JOIN以后成功了,就是SQL语句比较长一点。

这里给出一个简单的解法:

select * from 表B where exists(select 1 from 表A where A.key1=B.key1 and A.Key2=B.Key2)


收贴了。
忠向 2006-08-25
  • 打赏
  • 举报
回复
非常感谢两位快速反应!

回 jacobsan(jacobsan) :
你好像没看明白我的问题,呵呵,我的是两列关键字

回 xyxfly(小虾米。。。)
反映真快,这就去试试看。如通过就结贴,呵呵


xyxfly 2006-08-25
  • 打赏
  • 举报
回复
delete from B where B.key1 in(select B.key1 from B,A where B.key1=A.key1 and B.key2=A.key2)
and B.key2 in (select B.key2 from B,A where B.key1=A.key1 and B.key2=A.key2)
jacobsan 2006-08-25
  • 打赏
  • 举报
回复
create table #A(key1 varchar(20))
create table #B(key2 varchar(20))

insert into #A values('aaa')
insert into #A values('bbb')
insert into #A values('ccc')
insert into #B values('aaa')
insert into #B values('bbb')
insert into #B values('ddd')

delete from #B where key2 in (select key2 from #A,#B where #A.key1=#B.key2)
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
delete B.* from B,A where B.key1=A.key1 and B.key2=A.key2??
忠向 2006-08-25
  • 打赏
  • 举报
回复
此问题有点类似 IN 的操作,但是 IN 操作只支持一个列的情况,多列的怎样做,就不知道了

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧