gpt4 book ai didi

sql - 如何仅基于 ROW_NUMBER() 更新行?

转载 作者:行者123 更新时间:2023-12-02 09:33:18 25 4
gpt4 key购买 nike

这样的SQL查询:

SELECT ROW_NUMBER() OVER (PARTITION BY ID, YEAR order by ID ), ID, YEAR
from table t

给我以下查询集:

1   1000415591  2012
1 1000415591 2013
2 1000415591 2013
1 1000415591 2014
2 1000415591 2014

如何更新 ROW_NUMBER() 等于 2 的记录?该记录的其他字段是相同的(selectdistinct from table where id = 1000415591 给出 3 条记录,当有 5 条没有 distinct 关键字时),所以我只能依赖 ROW_NUMBER( )值。

我需要 Oracle 的解决方案,因为我看到了 SQL-Server 的类似解决方案,但它不适用于 Oracle。

最佳答案

您可以使用非常冗长且易于理解的 MERGE 语句。

例如,

MERGE INTO t s 
USING
(SELECT ROW_NUMBER() OVER (PARTITION BY ID, YEAR order by ID ) RN,
ID,
YEAR
FROM TABLE t
) u ON (s.id = u.id)
WHEN MATCHED THEN
UPDATE SET YEAR = some_value WHERE u.RN = 2)
/

注意您不能合并用于连接 ON 子句的同一列。

关于sql - 如何仅基于 ROW_NUMBER() 更新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30454010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com