34,590
社区成员
发帖
与我相关
我的任务
分享
create proc kk
@num int
as
begin
declare c_name cursor
for select * from tb where id=@num
open c_name
fetch absolute @num from c_name
close c_name
deallocate c_name
end
declare @num
set @num=50
exec kk @num
取n到m行
1.
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)
2.
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表
set rowcount n --只取n条结果
select * from 表变量 order by columnname desc
3.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
4.如果tablename里没有其他identity列,那么:
先生成一个序列,存储在一临时表中.
select identity(int) id0,* into #temp from tablename
取n到m条的语句为:
select * from #temp where id0 > =n and id0 <= m
如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
5.如果表里有identity属性,那么简单:
select * from tablename where identity_col between n and m
6.SQL2005开始.可以使用row_number() over()生成行号
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
create table Material --材料表
(
Mid int identity primary key,
Mname varchar(100) not null, --材料名称
pid int not null ,--材料分两级0:为一级材料 ,二级材料此值为 foreign key references Material(mid)
)
insert Material (Mname,Pid) select '钢铁',0
union all select '木材',0
union all select '8号铁丝',1
union all select '三角铁',1
union all select '四棱主钢',1
union all select '红松木方',2
union all select '果松板方',2
union all select '塑钢',0
select * from
(select ROW_NUMBER()Over(ORDER BY mid) as 'x',* from Material) as a
where a.x=5
--取出第5条
SELECT TOP 1 * FROM (SELECT TOP @NUM * FROM LI ORDER BY COL) LO ORDER BY LO.COL DESC
DECLARE @SQL NVARCHAR(100)
SELECT @SQL = 'SELECT............'
EXEC @SQL
declare @S int
declare @Str varchar(1000)
set @S = 20
set @Str = 'select top 1 * from (select top ' + cast(@S as varchar(2)) + ' * from 表 )order by ID desc'
exec(@Str)
sql 2005
declare @S int
set @S = 20
select top(@s) * from tb
declare @S int
declare @Str varchar(1000)
set @S = 20
set @Str = 'select top ' + cast(@S as varchar(2)) + ' * from 表 '
exec(@Str)