日期:2014-05-19  浏览次数:20707 次

求一个存储过程,附带两个小问题
现有一个表有15000条记录
TABLE(A,B)
1,我要每隔300个记录对接下来的100个记录,更新其中的一个字段内容,写一个存储过程:   例如要更新表中第400到500条记录,再更新第800到900条记录的内容...

2,我如何取出表中如:400到500条的记录

3,我对该表的A字段排了序,加入到一个新表中,为什么新表记录没有按A字段排序
select   *   into   table2   from   table   order   by   a   desc
如何才能让表中的字段自动按A字段排序


------解决方案--------------------
1、
如果表中没有排序字段,借助临时表,或者游标遍历

2、
select identity(int,1,1) as rid,* into # from table1
select * from # where rid between 401 and 500

3、
select * into table2 from (select top 100 percnet * from table1 order by a desc) t

------解决方案--------------------
1.假设id为主键
create procedure protest
begin_num int,
end_num int
as
update tablea set col1= 'value ' where id between begin_num and end_num
2.select top 500 * from table where id not in (select top 400 id from table)
3.create table test(id int,col1 varchar(10).....)
insert into test select * from table order by a desc
------解决方案--------------------
--2,我如何取出表中如:400到500条的记录

SELECT TOP 100 * FROM 你的表名(nolock)
WHERE 主鍵字段> (SELECT MAX(主鍵字段) FROM (SELECT TOP 400
主鍵字段 FROM 你的表名 ORDER BY 主鍵字段 ASC) AS tmptable)
ORDER BY 主鍵字段 ASC
------解决方案--------------------
select top 100 * from table where id not in (select top 399 id from table)
------解决方案--------------------
SELECT TOP 100 * FROM 你的表名(nolock)
WHERE 主鍵字段> (SELECT MAX(主鍵字段) FROM 你的表 WHERE 主键字段 IN (SELECT TOP 400
主鍵字段 FROM 你的表名 ORDER BY 主鍵字段 ASC) AS tmptable)
ORDER BY 主鍵字段 ASC
这样才行吧?