SQL数据复制问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:26:16
先描述下我遇到的问题: 在表a中有很多数据, 我希望查出字段compute_date为昨天的所有的数据并产生与之匹配的新记录, 新纪录要求是compute_date字段内容修改为今天, 同时修改另外一个字段aaa[int]的内容为0, 还有要求就是不影响原来的数据, 只是新增记录, 记录数和昨天的一样多, 做了相应的修改.

希望高手些指点下 不胜感激 在线等到
例如:
ID compute_date aaa ...
...
1 2004-12-01 243 ...
...
n 2009-04-16 123 ...
n+1 2009-04-16 324 ...
n+2 2009-04-16 432 ...

我要的结果是
...[原有的数据依然存在, 只是新增一下数据]
n+3 2009-04-17 0 ...
n+4 2009-04-17 0 ...
n+5 2009-04-17 0 ...

谢谢两位的指点 不过明显的第一个回答是错的
第二位朋友的很详细 但是我的意图是把符合我条件的内容copy到该表后面 经过修改部分字段后形成新的记录 就是说除开需要修改的部分 还有不需要修改的部分 上面的说明中也很清楚 有"..."部分代表 如果有更好解决方案的朋友希望不惜赐教 如果可以 将会追加分数 分数不是问题 ...

ALTER TABLENAME MODIFY COLUMN ID INDENTIFY(1,1) NOT NULL
--上句修改后表中ID字段会自动加1
INSERT INTO TABLENAME(COMPUTE_DATE,INT)
SELECT convert(char(10),getdate(),121) 今天日期,0 初始值
FROM TABLENAME
WHERE 条件

当然了,你也可以用t-sql
declare @id int
declare @count int
declare @flag int
declare @day char(10)

select @id=max(id) from tablename
select @count=count(*) from tablename where 你的条件
set @flag=0
set @day=convert(char(10),getdate(),121)

while @flag<@count
begin
set @id=@id+1
insert into tablename(@id,@day,0)
set @flag=@flag+1
end

insert tableName
select convert(varchar(10),getdate(),121),0
from tableName where compute_date = convert(varchar(10),getdate() - 1,121)
试试可以不?