关于数据循环的一个有关问题最好不用游标,请大家帮忙解决一上啊速度要快一点的
关于数据循环的一个问题最好不用游标,请大家帮忙解决一下啊。速度要快一点的
我的数据库是这样的:
id field1
--------------
5 张三,2012-01-01
6 a,qer
7 b kk
8 cdd
9 李四,2012-1-8
10 agr[fg0)
11 dhg
12 e3y
13 王五,2012-3-9
15 fhg
16 guy
现在要把日期插入到field1的每一行的开头,按照ID顺序进行。即结果如下
id field1 field2
--------------
5 张三, 2012-01-01
6 a,qer 2012-01-01
7 b kk 2012-01-01
8 cdd 2012-01-01
9 李四,2012-1-8
10 agr[fg0) 2012-1-8
11 dhg 2012-1-8
12 e3y 2012-1-8
13 王五,2012-3-9
15 fhg 2012-3-9
16 guy 2012-3-9
最好不用游标,请大家帮忙解决一下啊。速度要快一点的
------最佳解决方案--------------------
我的数据库是这样的:
id field1
--------------
5 张三,2012-01-01
6 a,qer
7 b kk
8 cdd
9 李四,2012-1-8
10 agr[fg0)
11 dhg
12 e3y
13 王五,2012-3-9
15 fhg
16 guy
现在要把日期插入到field1的每一行的开头,按照ID顺序进行。即结果如下
id field1 field2
--------------
5 张三, 2012-01-01
6 a,qer 2012-01-01
7 b kk 2012-01-01
8 cdd 2012-01-01
9 李四,2012-1-8
10 agr[fg0) 2012-1-8
11 dhg 2012-1-8
12 e3y 2012-1-8
13 王五,2012-3-9
15 fhg 2012-3-9
16 guy 2012-3-9
最好不用游标,请大家帮忙解决一下啊。速度要快一点的
------最佳解决方案--------------------
--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([id] INT,[name] VARCHAR(50),[date] datetime)
INSERT #tb
SELECT 5,'张三,2012-01-01',NULL UNION ALL
SELECT 6,'a,qer',NULL UNION ALL
SELECT 7,'bkk',NULL UNION ALL
SELECT 8,'cdd',NULL UNION ALL
SELECT 9,'李四,2012-01-08',NULL UNION ALL
SELECT 10,'agr[fg0)',NULL UNION ALL
SELECT 11,'dhg',NULL UNION ALL
SELECT 12,'e3y',NULL UNION ALL
SELECT 13,'王五,2012-03-09',NULL UNION ALL
SELECT 15,'fhg',NULL UNION ALL
SELECT 16,'guy',NULL
GO
--> 测试语句:
;with cte as
(
select *,[date1]=(case when charindex( ',',[name])> 0
and isdate(stuff([name],1,charindex( ',',[name]), ''))=1
then stuff([name],1,charindex( ',',[name]), '') end )
from #tb
)
update t set [date]=(select top 1 [date1] from cte where id<=t.id order by [date1] desc)
from cte as t
select * from #tb
/*
id name date
5 张三,2012-01-01 2012-01-01 00:00:00.000
6 a,qer 2012-01-01 00:00:00.000
7 bkk 2012-01-01 00:00:00.000
8 cdd 2012-01-01 00:00:00.000
9 李四,2012-01-08 2012-01-08 00:00:00.000
10 agr[fg0) 2012-01-08 00:00:00.000
11 dhg 2012-01-08 00:00:00.000
12 e3y 2012-01-08 00:00:00.000
13 王五,2012-03-09 2012-03-09 00:00:00.000
15 fhg 2012-03-09 00:00:00.000