一个sql问题,帮忙看下,一时想不起来了,谢谢啊
表id num name parent_id
11 01 xx
12 02 yy
13 0101 aaa
14 0102 bbb
15 0203 ccc
给让后面3条数据的parent_id赋值,规则是0101、0102的parent_id=num为01的id,0203的parent_id=num为02的id,update语句怎么写啊,帮帮忙啊,谢谢
------解决方案--------------------表id num name parent_id
11 01 xx
12 02 yy
13 0101 aaa
14 0102 bbb
15 0203 ccc
给让后面3条数据的parent_id赋值,规则是0101、0102的parent_id=num为01的id,0203的parent_id=num为02的id,update语句怎么写啊,帮帮忙啊,谢谢
---------------------
update tb
set a.parent_id = b.id
from tb a,tb b
where len(a.num) > 2 and b.num = len(a.num,2)
------解决方案--------------------Create table tb(id int,num varchar(10),name varchar(10),parent_id int)
insert into tb values(11, '01' ,'xx' ,null)
insert into tb values(12, '02' ,'yy' ,null)
insert into tb values(13, '0101', 'aaa',null)
insert into tb values(14, '0102', 'bbb',null)
insert into tb values(15, '0203', 'ccc',null)
go
update tb
set parent_id = b.id
from tb a,(select * from tb) b
where len(a.num) > 2 and b.num = left(a.num,2)
select * from tb
drop table tb
/*
id num name parent_id
----------- ---------- ---------- -----------
11 01 xx NULL
12 02 yy NULL
13 0101 aaa 11
14 0102 bbb 11
15 0203 ccc 12
(所影响的行数为 5 行)
*/
------解决方案----------------------try
update 表名 set parent_id = (select id from 表名 where num=left(t.num,2))
from 表名 as t
where len(num)>2