Dense_Rank和批量更新结合的奇怪问题,请高手帮忙
现在有这样的一个表结构, 里面有以下5个主要字段:
Table A(
buyer, --购买者 PK1
things, --商品 PK2
supplier, --供货商 PK3
rank, --评级
point --分数
)
一开始, buyer,things,supplier和point 都有数值了,
现在想对 供货商进行评级, 单位是buyer和things
SELECT DENSE_RANK() OVER( PARTITION BY buyer, things ORDER BY point DESC) AS RANK
就可以很好的查询到我需要的RANK.
然后, 我想把查询到的RANK, 一次更新到这张Table里面去.
UPDATE A t1
SET rank =
(SELECT DENSE_RANK() OVER( PARTITION BY t2.buyer, t2.things ORDER BY t2.point DESC) AS RANK
FROM A t2
WHERE t1.buyer = t2.buyer
AND t1.things = t2.things
And t1.supplier = t2.supplier)
Table A 自己和自己JOIN一下
应该是正常更新的.
但是每条记录的rank字段都是1, 而不是查询出来的正确的RANK
这是为什么啊?
(注: 如果不是用DENSE_RANK, 而是直接SET rank = point是对的
说明UPDATE应该没问题, 是不是DENSE_RANK有什么内部机制,
导致这种UPDATE方法不能正常更新? )
[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8453538/viewspace-968066/
,如需转载,请注明出处,否则将追究法律责任。