表A:
user lastuser flag
11 00
22 00
1001 11
101010 1001
111111 101010 麻烦在这里,比如我执行一个UPDATE 将11的flag置为1了。
我需要把11下面的1001也置为1,然后1001改变过后,又要将1001下面的101010又置为1,如果下面还有,比如111111再置
反之,置0也这样置 这个过程怎么实现好呢?直接通过SQL我好像办不到了大家帮忙想想办法,给点意见,SQL办不到的话,触发器可以办到吗???
user lastuser flag
11 00
22 00
1001 11
101010 1001
111111 101010 麻烦在这里,比如我执行一个UPDATE 将11的flag置为1了。
我需要把11下面的1001也置为1,然后1001改变过后,又要将1001下面的101010又置为1,如果下面还有,比如111111再置
反之,置0也这样置 这个过程怎么实现好呢?直接通过SQL我好像办不到了大家帮忙想想办法,给点意见,SQL办不到的话,触发器可以办到吗???
解决方案 »
- 在delphi2007中设置断点,但是不起作用
- 如何只通过单击DBGrid的某行记录(不按CTRL键),然后选择它并且加亮显示,能选择多行...同时也能选择从M-N行的连续记录,同时也是加亮显示,其
- 关于用idftp控件被动连接ftp
- 多线程问题?
- 关于';'expected but'.'found的错误
- ExcelQueryTable怎么使用???
- 请教!关于外壳程序的问题
- 高分求ASF文件播放器源码例子
- 求救!!!DELPHI+SQL SERVER问题!!!不够可以加分!!
- 请大侠指点迷津!
- Client 端自动升级
- 急:高分悬赏:关于TMS 组建中 advstringgrid 着色换行的问题
insert into tb values('11' , '00' , null)
insert into tb values('22' , '00' , null)
insert into tb values('1001' , '11' , null)
insert into tb values('101010' , '1001' , null)
insert into tb values('111111' , '101010' , null)
go--查询指定节点及其所有子节点的函数
create function f_cid(@user varchar(10)) returns @t_level table([user] varchar(10) , level int)
as
begin
declare @level int
set @level = 1
insert into @t_level select @user , @level
while @@ROWCOUNT > 0
begin
set @level = @level + 1
insert into @t_level select a.[user] , @level
from tb a , @t_Level b
where a.lastuser = b.[user] and b.level = @level - 1
end
return
end
go--调用函数查询('11')及其所有子节点
update tb
set flag = 1
where [user] in
(select a.[user] from tb a , f_cid('11') b where a.[user] = b.[user])select * from tbdrop table tb
drop function f_cid/*
user lastuser flag
---------- ---------- -----------
11 00 1
22 00 NULL
1001 11 1
101010 1001 1
111111 101010 1(所影响的行数为 5 行)
*/在SQL SERVER区中得到解决,也感谢楼上几位!~