芯友网xin1234.com

这种数据如何做到,删除id=X的值的,并且pId=X的数据也删除?



小白

这种数据如何做到,删除id=X的值的,并且pId=X的数据也删除?
河南-浅笑
写个存储过程
河南-浅笑
要么你做个事务
成都-刁民
级联操作
河南-浅笑
就是删除父目录的同时删除子选项呗
小白
对的,对的
有什么好的办法吗,除了存储过程
成都-刁民
也可以写个递归去删
河南-浅笑
事务呀
不需要存储,弄个事务不就好了么
同时执行两条delete语句
小白
我试试事务吧,谢了
成都-刁民
3级不就要 3个delete。。。
河南-浅笑
@成都-刁民 这得看数据库设计哈哈
成都-刁民
那种无限级的 完了。。。
河南-浅笑
不会
看数据库设计
有rootid
还是两条
有path
只要匹配到path的,全部删掉就可以了
白金-喂喂
为什么不用where 里面带or
DELETE FROM 表 where id=600 or pid=600
成都-刁民
这种 3级呢
在衍生一点  多级的时候
成都-刁民
with a as
(select FID from 表 where FID ='值'
union all
select x.FID from 表 x,a where x.FPID =a.FID )
delete from 表 where FID in(select FID from a )

尼玛 想想   就然感觉 像个 2叉树
小白
事务不行啊
我刚试过了
白金-喂喂
删除id=X的值的,并且pId=X的数据!
翻译一下,就是删除id=x 或者 pid=x啊
成都-刁民
你还是 做递归 删除吧  简单
白金-喂喂
 是我审题有误嘛 。。
成都-刁民
小白
@白金-喂喂 审题没问题,这种如果二级的可以,多级的就有问题了
白金-喂喂
你的意思是删除入口条件必须是 id=x 之后才允许删除其他字段=x的数据行?
小白
嗯嗯,对的,接受的参数是id
__
先查
查完删
小白
接受参数id=x之后,先删除pId=x,之后再删除id=x
我再试试吧
成都-刁民
会用 递归 这东西 还是 还是很简单的
__
是啊
小白
成都-刁民
看你这张表的设计 注定要用递归
让我们一直往前走。
恩恩
是的
小白
好吧,我再试试
白金-喂喂
注定递归。
白金-木木
html2pdf   中文乱码 怎么搞
让我们一直往前走。
不然你循环太low了
白金-喂喂
tips:不要递归delete,递归条件,然后delete
成都-刁民
恩  也可以提高效率
小白
成都-刁民
最好还是  换表
小白
不能换表了
河南-浅笑
@小白 真不一定要递归的。。
只要你的数据库字段设计的好
无限级分类一般都建议使用path,记录全路径就可以了
白金-木木
有人做过  html转pdf 吗?
成都-刁民
问题 他设计 就是这样
小白
这字段
河南-浅笑
那你递归吧。。
没办法
白金-喂喂
其实有一种身份登记的方法,加个字段标识这个
河南-浅笑
还是数据表设计的不好
成都-刁民
数据量 大就不建议 这样搞了  效率太低
小白
字段标识?
白金-喂喂
身份等级,最高级表示0,然后就是1,2,3 删除0的时候就表示删除根,然后对整个组全删除
小白
数据量不是太大,内部使用
白金-喂喂
你的这个结构就是一个个的组啊,但是这个设计会造成数据的耦合,不过这里可以微小的牺牲下设计范式。
小白
这种方式知道,没办法了,开始就脑残用这种,主要是考虑到跟Ztree插件结合。
白金-喂喂
额,那就递归
递归也不坏,只要不递归delete就行
哈哈哈
小白
好的好的

相关问题
sql中如何查询两个字段值相等的数据】 数据不大的话,考虑用内连接select p1.user,p2.pass from (select user from sp_aaa) as p1 inner join sp_AAA as p2 on p1.
或者我把数据量大的表保存在pgsql上。加速啊】 ;普通表就留在mysql上比如评论什么的
能不能用一句SQL语句查询数据表中 username字段是手机号码的 数据呢 】 肯定可以啊;SELECT * FORM. v9_workflow_copy where REGEXP_LIKE('workname', '^[1]{1}[35]{1}[[:digit:]]{9}$'  这句错在哪里呢  要匹配手机号码的 
想用SQL查近一个月的数据  在表后面应该怎么加限制呢 新手 求教】 time>time()-30*3600*24
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容