我想查询从第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