sql 2000里一个疑问

yh10231033 2010-07-13 03:34:39
现有表a,根据表a的结构,再创建表b,即表a与表b结构一样,现在表a中的部分记录,在表b中存在,表的主键:parid,id两个,现在要删除表a中的数据:凡是在表b中存在的,

搞了半天不知道该怎么删除,最好能用类市查询的一条语句搞定,循环的话对几十万数据会很慢,
如查询的:select * from a innter join b on a.parid = b.parid and a.id = b.id

那么删除能直接这样写吗:delete from a innter join b on a.parid = b.parid and a.id = b.id
因为是服务器上的数据,不敢轻易删除啊,
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weioxwei 2010-07-15
  • 打赏
  • 举报
回复
上面 写错了 .

delete a from b where a.parid in (select b.parid from b where a.id = b.id)
weioxwei 2010-07-15
  • 打赏
  • 举报
回复
delete a from b where a.parid = b.parid and a.id = b.id
Powertion 2010-07-14
  • 打赏
  • 举报
回复
delete from a where parid+'$'+id IN
select parid+'$'+id from b;
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dev1978 的回复:]
SQL code
delete from a where parid+'$'+id IN
select parid+'$'+id from b;
[/Quote]

这个想过,可惜两个字段类型不一样,用case或者convert怕搞的长度都不一样了,到时又麻烦了
chengg0769 2010-07-13
  • 打赏
  • 举报
回复
1. 备份数据库后再做dba的工作。不要侥幸。这应该是原则。
2. 2#的写法应该就可以删除了吧。








-----------------------------------------------------
PB混淆器(5-12) http://chengg0769.download.csdn.net/
new4everlau 2010-07-13
  • 打赏
  • 举报
回复
顶贴!顶楼上!
jimwoo 2010-07-13
  • 打赏
  • 举报
回复
或者
delete from a where exists(select 1 from b where a.parid = b.parid and a.id = b.id)
jimwoo 2010-07-13
  • 打赏
  • 举报
回复
delete a from a join b on a.parid = b.parid and a.id = b.id

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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