大虾帮忙解释下sqlserver top 1 语句为什么取到的不是第一条记录

bestleo55 2009-04-04 12:04:57
select top 3 uid from dbo.Account order by uid desc 显示结果为
uid
3
2
1
select top 1 uid from dbo.Account where uid in (select top 3 uid from dbo.Account order by uid desc)
取到的uid是1

select top 2 uid from dbo.Account where uid in (select top 3 uid from dbo.Account order by uid desc)
取到的uid是 3 2

top 1 应该是取第一条记录 uid应该是3的 为什么取到是1?
...全文
803 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhj92lxs 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youcity 的回复:]
select  top 1 uid  from dbo.Account where uid in (select top 3 uid from dbo.Account order by uid desc) order by uid desc

in条件检索出来的结果是3 2 1 ,但这里只是作为了条件,而你主SELECT文里没有进行排序的话,每次取出来的结果可能就是从符合结果的条件里随机取得

[/Quote]
正解,不过最好不要用in
youcity 2009-04-04
  • 打赏
  • 举报
回复
select top 1 uid from dbo.Account where uid in (select top 3 uid from dbo.Account order by uid desc) order by uid desc

in条件检索出来的结果是3 2 1 ,但这里只是作为了条件,而你主SELECT文里没有进行排序的话,每次取出来的结果可能就是从符合结果的条件里随机取得

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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