oracle按照某一列数值排序,并将排序的名次保存到另一个字段

如图所示:想将按照bonus字段排序的结果,将ranging字段赋值1,2,3(如图中红色字体)求如何实现,在线等急急急... 如图所示:想将按照 bonus 字段排序的结果,将ranging字段赋值1,2,3(如图中红色字体)求如何实现,在线等急急急 展开
 我来答
聊城王长安
2017-10-23 · TA获得超过925个赞
知道小有建树答主
回答量:499
采纳率:88%
帮助的人:131万
展开全部
select rownum no,* from 表名 order by bonus desc;

Oracle的rownum与rowid区别:

ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值;参考:http://tenn.iteye.com/blog/99339

rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid 可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中唯一。只要记录没被搬动过,rowid是不变的。rowid 相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有 rownum那些情况发生

追问
能不能将ROWNUM 出来的1,2,3   这些值改为其他值,比如2,2,1
追答
给你一个思路吧。
select aa.*,bb.rownum from SL_EXC aa left join (select只查bonus和rownum,并去除重复项) bb on aa.bonus=bb.bonus
如果rownum不对就先去除重复项再查rownum
xingkaidazhou
2020-04-23
知道答主
回答量:5
采纳率:0%
帮助的人:4352
展开全部
UPDATE SL_XXXX ee set ranging =
(select num from
(
SELECT rownum num,s.* from (
SELECT e.*
from SL_XXXX e
ORDER BY e.bonus
) s
) ss where ss.id = ee.id)
-- 今天遇到同样的问题, 搜了半天, 献上拙见
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式