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
因为是服务器上的数据,不敢轻易删除啊,
...全文
48 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
发动态
发帖子
数据库相关
创建于2007-09-28

732

社区成员

PowerBuilder 数据库相关
申请成为版主
社区公告
暂无公告