首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

小弟我想查询从第10行开始的10条记录

2012-01-18 
我想查询从第10行开始的10条记录如何查但我也没有关类式ID这样的字段[解决办法]没有主键是不行的.[解决办

我想查询从第10行开始的10条记录
如何查   但我也没有关类式   ID   这样的字段

[解决办法]
没有主键是不行的.
[解决办法]
给个示例吧
--取8.9.10三行记录的方法,前提,编号是主键才行

select top 3 *
from gzda a
where 编号 in (select top 7 编号 from gzda order by 编号 desc)
order by 编号 desc

[解决办法]
如果确实没有主键,那么只能取到临时表中,加个自增列字段.
[解决办法]
增加一个自增列
select top 10 * from 表
where 自增列字段 not in (select top 10 自增列字段 from 表)
[解决办法]
select identity(int,1,1) as rowindex,* into #tmp from employees
select top 10 * from #tmp where rowindex not in (select top 10 rowindex from #tmp)
[解决办法]


--第一种方法
--第11条到第20条,共选出10条记录
select *
from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2
order by ID


--第二种方法
--第11条到第20条,共选出10条记录
select top 10 *
from 表名
where ID> (select max(ID) from (select top 10 ID from 表名 order by ID) t1)
order by ID



[解决办法]
select top 10 * from AA A where A.aID not in (select top 9 aID from AA B )
[解决办法]
主键是最低要求.
假设你前20条记录都一样,那么会取出什么样的结果?
[解决办法]
试试这样:
Create Table MyTable (
Column1 int null,
Column2 int null,
Column3 int null,
Column4 int null
)

Declare @Count int
Declare @ColumnValue varchar(20)
Set @Count = 1
While(@Count <=50)
Begin
Insert Into MyTable Values (@Count,@Count,@Count,@Count)
Set @Count = @Count + 1
End

Select * From (Select * , ROW_NUMBER() OVER (Order By Column1) As ID From MyTable
) As T
Where T.Pos> =10 And T.Pos <=20

drop Table MyTable

-----------------
Column1 Column2 Column3 Column4 ID
1010101010
1111111111
1212121212
1313131313
1414141414
1515151515
1616161616
1717171717
1818181818
1919191919
2020202020
[解决办法]
Where T.Pos> =10 And T.Pos <=20 改成 Where T.ID> =10 And T.ID <=20

热点排行