怎么查询比指定时间小的前两条数据

JasonCharlesBourne 2014-08-20 10:11:51
比如指定时间是13:30
数据库里有:
13:20
13:10
12:50
那么我需要的是13:20 13:10这两条数据
不知道这样写对不对
select top 2 XX,XX,time from tablename where time < 13:30 order by time desc
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveNet_ 2014-08-20
  • 打赏
  • 举报
回复
select top 1* from tablename where id not in (select top 1 id from tablename where time < 13:30 order by time desc) and time < 13:30 order by time desc 去掉最高的那条就行了,1你可以改成任意数值
卖水果的net 版主 2014-08-20
  • 打赏
  • 举报
回复
引用 5 楼 iloveiverson 的回复:
[quote=引用 3 楼 wmxcn2000 的回复:]

-- 加单引号
where time > '13:30' order by time desc 

想问一下,我要直接取小于13:30中的第二条,也就是比13:30第二小的那条应该怎么写呢?[/quote]

-- 用一个子查询 ,先取第次小、二小 两条记录(top 2 ) ,再反向排序,取第一个 top 1 
-- 大概如下,没有测试过。
select  top 1 * from (select top 2 from t where time >'111' order by time desc) x order by time asc
KeepSayingNo 2014-08-20
  • 打赏
  • 举报
回复
完全正确
JasonCharlesBourne 2014-08-20
  • 打赏
  • 举报
回复
引用 3 楼 wmxcn2000 的回复:

-- 加单引号
where time > '13:30' order by time desc 

想问一下,我要直接取小于13:30中的第二条,也就是比13:30第二小的那条应该怎么写呢?
laoer_2002 2014-08-20
  • 打赏
  • 举报
回复
卖水果的net 版主 2014-08-20
  • 打赏
  • 举报
回复

-- 加单引号
where time > '13:30' order by time desc 

---涛声依旧--- 2014-08-20
  • 打赏
  • 举报
回复
是对的,楼主测试一下就知道了
LoveNet_ 2014-08-20
  • 打赏
  • 举报
回复
没什么问题啊,应该是对的
HelloWordGirl 2014-08-20
  • 打赏
  • 举报
回复
引用 8 楼 LoveNet_ 的回复:
select top 1* from tablename where id not in (select top 1 id from tablename where time < 13:30 order by time desc) and time < 13:30 order by time desc 去掉最高的那条就行了,1你可以改成任意数值
这个还不错

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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