没分了求帮助(0分)

  • 主题发起人 主题发起人 xin9200
  • 开始时间 开始时间
X

xin9200

Unregistered / Unconfirmed
GUEST, unregistred user!
请教···关于MS SQL存储过程
MS SQL存储过程
能否实现 如下功能
删除MS SQL数据库(CZ)下 不同表(A,B,C,D)里的 相同记录。D
这样的存储过程(带参数)应该如何编
我要ado能直接调用的(用delphi为参数赋值) 请 群里的高手指定一二!~
 
真是世态炎凉啊 !~
没分是没人理啊~~
 
删除MS SQL数据库(CZ)下 不同表(A,B,C,D)里的 相同记录。D
?
可以
 
麻烦下 能给举个例子么? 谢谢 我一点头绪都没有
 
A B C D 都是表?
 
对 就是 删除同一个 数据库 的不同表的相同记录
用存储过程
 
相同记录判断标准是什么?如果是主键相等,可以用以下方法

Delete from xxx where ID in (Select a.id from a inner join b on a.id=b.id inner join c on a.id=c.id inner join d on a.id=d.id)

但这种方法对于ABCD表记录较多时,可能速度较慢

如果是用存储过程,可以建临时表, 这样相对速度可以快些

比如 Select ID into #abc from a inner join b on a.Id= b.ID
这样,临时表里面就有两个表共有的记录了
然后继续对这个表进行处理,去除CD表没有的记录,如
Delete from #abc where id not in (select ID from c)
Delete from #abc where id not in (select ID from d)

这时#abc里面就是ABCD表共有的记录了。然后用
Delete from a where ID in (select ID from #abc)就可以删除相同记录了。

扩展开来,如果是要判断多个字段内容相同,也可以这样做。
 
后退
顶部