sql 查询一个表中最新数据 并且从后第3行到第6行数据?

wwzyyl9113 2010-12-04 09:09:11
sql 查询一个表中从第3行到第6行数据?

表 login
字段 id name time
比如表中有7条数据
id name time
1 a 2010-12-1 13:12:52
2 b 2010-12-2 13:12:52
3 c 2010-12-3 13:12:52
4 d 2010-12-4 13:12:52
5 e 2010-12-5 13:12:52
6 f 2010-12-6 13:12:52
7 g 2010-12-7 13:12:52
...
...

我想查询 这个表中 时间最新的并且从后面第2条数据开始查询 查询出3条数据出来
sql语句怎么写?

比如查询结果是
3 c 2010-12-3 13:12:52
4 d 2010-12-4 13:12:52
5 e 2010-12-5 13:12:52
...
...

...全文
909 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PitTroll 2010-12-04
  • 打赏
  • 举报
回复
select * from (select row_number() over(order by [time] asc) as row,* from login)t where row>1 and row<5
free_live_zyx 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shatamadedongxi 的回复:]
引用 1 楼 shatamadedongxi 的回复:
select top 3 * from login where id not in(select top 2 id from login)

应该是:
select top 4 * from login where id not in(select top 2 id from login)
[/Quote]

如果要时间最新的话
select top 4 * from login where id not in(select top 2 id from login) order by time desc
wwzyyl9113 2010-12-04
  • 打赏
  • 举报
回复
select top 3 * from login where id not in(select top 2 id from login)

如果数据库里有10条数据 这个是不是就不好用了,
如果有10条数据,我就想从后第8条开始查询,查询出3条出来
这个该怎么写呢?
q107770540 2010-12-04
  • 打赏
  • 举报
回复
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].time DESC) AS [ROW_NUMBER], [t0].ID,[t0].name,[t0].time
FROM [login] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN 3 AND 5
ORDER BY [t1].[ROW_NUMBER]
free_live_zyx 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiaoqiu1234 的回复:]
select top 3 * from login where id not in(select top 2 id from login) 可以实现吗
[/Quote]

我测试过了,可以
xiaoqiu1234 2010-12-04
  • 打赏
  • 举报
回复
select top 3 * from login where id not in(select top 2 id from login) 可以实现吗
free_live_zyx 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shatamadedongxi 的回复:]
select top 3 * from login where id not in(select top 2 id from login)
[/Quote]
应该是:
select top 4 * from login where id not in(select top 2 id from login)
free_live_zyx 2010-12-04
  • 打赏
  • 举报
回复
select top 3 * from login where id not in(select top 2 id from login)
End 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 q107770540 的回复:]

SQL code
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].time DESC) AS [ROW_NUMBER], [t0].ID,[t0].name,[t0].time
FROM [login] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN 3 A……
[/Quote]
UP THIS
wuyq11 2010-12-04
  • 打赏
  • 举报
回复
select top m * into 临时表(或表变量) from tablename order by columnname
set rowcount n
select * from 表变量 order by columnname desc

;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧