查询出的结果为排名最高的和排名最低的sql

ozn_switch 2008-01-03 12:04:59
假设有这么一个表detail:
字段为: name rank
记录为: tom 1
jery 3
jim 2
li 4
.
.
.
name就是名字了,rank是个排名,现在想查询出的结果为排名最高的和排名最低的name.
如果这么写:select s1.*, s2.* from
(
(select t1.name from
(select name from rank order by rank) t1
where rownum = 1)
) s1,
(
(select t2.name from
(select name from rank order by rank desc) t2
where rownum = 2)
) s2
势必效率不高,请教高手更好的写法,谢谢
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ozn_switch 2008-01-03
  • 打赏
  • 举报
回复
哦,谢谢bjt_
用union来连接,我没想到。
如果记录数比较多呢
bjt_ 2008-01-03
  • 打赏
  • 举报
回复
记录数少,用子查询,rank要有索引,
select * from detail where rank in
(select max(rank) from detail
union select min(rank) from detail)
ozn_switch 2008-01-03
  • 打赏
  • 举报
回复
好不容易找到结帖的地方。。。
ozn_switch 2008-01-03
  • 打赏
  • 举报
回复
谢谢
一会我就结帖
heyixiang 2008-01-03
  • 打赏
  • 举报
回复
下面的代码效率应该更高些


select * from detail where rank in (select max(rank) from detail)
union all
select * from detail where rank in (select min(rank) from detail)

17,377

社区成员

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

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