+ -
当前位置:首页 → 问答吧 → sql server怎么查询一个表的 第2条数据?

sql server怎么查询一个表的 第2条数据?

时间:2011-12-01

来源:互联网

sql server怎么查询一个表的 第2条数据?新手求高手帮帮忙

作者: alikeyount   发布时间: 2011-12-01

select top 2 * from table 
查询前两条 至于第二条 要根据你ID来查吧
如果有高手知道帮你解决吧!

作者: yhui1989love   发布时间: 2011-12-01

top 2里面not in top 1的

作者: fuxiyang   发布时间: 2011-12-01

set rowcount 2
select top 1 * from tb order by id desc

作者: fredrickhu   发布时间: 2011-12-01

select * from(
select row_number()over(order by (select 1))rn,* from tb
)t where rn=2

作者: qianjin036a   发布时间: 2011-12-01

F妹子就是威武 ...

rowcount 这个一直没用过完全没想起来啊!

作者: yhui1989love   发布时间: 2011-12-01

引用 3 楼 fredrickhu 的回复:
set rowcount 2
select top 1 * from tb order by id desc

如果没有主键、索引之类的,完全的乱序表,这个好像不行吧?

作者: fuxiyang   发布时间: 2011-12-01

引用 6 楼 fuxiyang 的回复:
引用 3 楼 fredrickhu 的回复:
set rowcount 2
select top 1 * from tb order by id desc

如果没有主键、索引之类的,完全的乱序表,这个好像不行吧?

恩 不行 不过如果本身是乱序的 不排序也没有意义了

作者: fredrickhu   发布时间: 2011-12-01

引用 3 楼 fredrickhu 的回复:

set rowcount 2
select top 1 * from tb order by id desc


不行啊 我执行之后查询出来的 是倒序第一条数据 不是第2条 删除这个排序代码 查询出来的 也是第一条(正序)
 麻烦再指点指点被。。

作者: alikeyount   发布时间: 2011-12-01

引用 4 楼 qianjin036a 的回复:

select * from(
select row_number()over(order by (select 1))rn,* from tb
)t where rn=2


执行的时候有错误。。 怎么回事。。。

作者: alikeyount   发布时间: 2011-12-01

要不读取前两条数据,追加一列identity之后插入临时表,然后再从临时表中取identity为2的记录;

作者: fuxiyang   发布时间: 2011-12-01

引用 10 楼 fuxiyang 的回复:

要不读取前两条数据,追加一列identity之后插入临时表,然后再从临时表中取identity为2的记录;


我还不会插入临时表。。 但是你的意思我明白了

作者: alikeyount   发布时间: 2011-12-01

SQL code
select id=identity(int,1,1),* into #tb from tb
select * from #tb where id=2

作者: fredrickhu   发布时间: 2011-12-01

引用 11 楼 alikeyount 的回复:
引用 10 楼 fuxiyang 的回复:

要不读取前两条数据,追加一列identity之后插入临时表,然后再从临时表中取identity为2的记录;


我还不会插入临时表。。 但是你的意思我明白了

按楼上F姐的语句就对了

作者: fuxiyang   发布时间: 2011-12-01

F姐,像这种,可以构建一个加了identity的视图不?然后直接从视图中取id=x的记录;

作者: fuxiyang   发布时间: 2011-12-01

引用 12 楼 fredrickhu 的回复:

SQL code
select id=identity(int,1,1),* into #tb from tb
select * from #tb where id=2


select id=identity(int,1,1),* into #tb from Scoreproduct
select * from #tb where id=2

无法使用 SELECT INTO 语句将标识列添加到表 '#tb',该表的列 'Scoreproduct_id' 已继承了标识属性。

我的表里有标识列了 所以插入不了了 是吗?
小弟是新手求F姐在帮帮忙

作者: alikeyount   发布时间: 2011-12-01

那你直接按scoreproduct_id来查就行了啊
SQL code

set rowcount 2
select top 1 * from tb order by scoreproduct_id desc

作者: fuxiyang   发布时间: 2011-12-01