SQL 怎么用指定条件查询RANK函数生成的新排名列?

比如这样一张表testxingmingfenshu张三70李四80王五90赵六95然后用SELECTxingming,fenshu,RANK()OVER(ORDERBYf... 比如这样一张表
testxingming fenshu
张三 70
李四 80
王五 90
赵六 95
然后用SELECT xingming,fenshu,RANK() OVER(ORDER BY fenshu DESC) as paiming from test
能够生paiming列
问题是 paiming 列是临时生成的,我需要对paiming列做条件筛选,比如只选择排名大于1且小于4的行,想在后面加上 where paiming >1 and paiming <4
这时提示 "列名 'paiming' 无效"
请问大神这个问题有解吗?因为实在不想在数据表里添加一列"paiming",因为科目太多,会带来巨大的麻烦。。。
展开
 我来答
无私又洒脱灬百花718
2019-03-01 · TA获得超过7008个赞
知道大有可为答主
回答量:8743
采纳率:39%
帮助的人:404万
展开全部
你说的这个问题和rank没有关系,你只是想把查出来的一列数据根据条件再update到表中某一列。 所以你可以用临时表先查出(key, value)这样的组合,然后在通过key相等这样的条件来update你表中对应行的某列的value。 With T { Select a.key_no as key, RANK() over(partition by a.key_no order by a.id) as value, From A a } update A set a.Some_Column = ( select t.value from T t where t.key = A.key_no )
tj_angela
2019-03-01 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2572万
展开全部
需要再套一层子查询, 计算字段直接使用不太方便
select *
from (SELECT xingming,fenshu,RANK() OVER(ORDER BY fenshu DESC) as paiming from test
) t
where paiming >1 and paiming <4
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式