ITPub博客

首页 > 数据库 > Oracle > oracle update 结合更新

oracle update 结合更新

原创 Oracle 作者:changnan85 时间:2007-09-05 17:05:39 0 删除 编辑
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博客 ” ,链接:http://blog.itpub.net/8453538/viewspace-968066/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论
  • 博文量
    2
  • 访问量
    1431