佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1109|回复: 5

如何写这段sql statement呢?(for delete purpose)

[复制链接]
发表于 12-12-2006 03:22 AM | 显示全部楼层 |阅读模式
我的table如下

ID    Parent_ID    Name
1     0            Marcus
2     0            Kelvin
3     1            Jay
4     1            Yuki
5     3            Jordan
6     3            Sam
7     2            Jack

DELETE FROM user WHERE ID = '1' OR Parent_ID = '1'

如果我用以上的query只能delete到 ID=1 or Parent_ID=1 的资料,我要如何才能把和ID=1有关联的资料也delete呢?

比如说,ID=5 和 ID=6 的资料,这两个资料应当也被delete,因为他们的 Parent_ID = 3,
而[3]这个ID的Parent_ID也等于[1]

最后剩下的record应该只剩下是 ID=2 和 ID=7 的资料
回复

使用道具 举报


ADVERTISEMENT

发表于 12-12-2006 10:21 AM | 显示全部楼层
建议用trigger来delete比较直接,而且同一个table里的两个column做reference好象不是很好。。
回复

使用道具 举报

 楼主| 发表于 12-12-2006 10:29 AM | 显示全部楼层
基于一些因数,我的table design必须这样.....

其实如果用两段sql的话就可以做到我要做的东西,但我想知道如何用一段sql就搞定
回复

使用道具 举报

发表于 12-12-2006 12:43 PM | 显示全部楼层

回复 #3 counterking 的帖子

假设:
1. Parent child level 数目是固定.
2. 数据库- MS SQL 或 Oracle


DELETE FROM USER WHERE
(ID = '1' OR Parent_ID = '1'
OR
EXISTS (SELECT 1
                FROM USER PARENT
               WHERE PARENT.Parent_ID  = '1'
                 AND PARENT.ID = USER.Parent_ID));

要用一段sql就搞定并不难, 难在写一个比较快的sql.
以上sql, 不担保performance issue.
回复

使用道具 举报

发表于 12-12-2006 12:46 PM | 显示全部楼层

回复 #3 counterking 的帖子

假设:
1. Parent child level 数目是固定.
2. 数据库- MS SQL 或 Oracle


DELETE FROM USER WHERE
(ID = '1' OR Parent_ID = '1'
OR
EXISTS (SELECT 1
                FROM USER PARENT
               WHERE PARENT.Parent_ID  = '1'
                 AND PARENT.ID = USER.Parent_ID));

要用一段sql就搞定并不难, 难在写一个比较快的sql.
以上sql, 不担保performance issue.
回复

使用道具 举报

发表于 12-12-2006 11:45 PM | 显示全部楼层
用 stored procedure 来做吧...
直接执行两个 sql.

DELETE FROM user WHERE ID IN (SELECT tmp.ID FROM user tmp WHERE tmp.Parent_ID = '1')
DELETE FROM user WHERE ID = '1' OR Parent_ID = '1'
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-9-2025 02:39 AM , Processed in 0.105142 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表