ORACLE SQL-每个ID的最大技术密钥的更新语句



我需要为我的一个表编写一个更新语句。该表包含一个技术密钥和一个客户ID。

我需要通过将字段提升为+1来更新此表中的字段,但仅适用于技术密钥为特定客户ID的最大值的字段。

起初,我试图用我通常在MSSQL:上的方式来写这篇文章

UPDATE a
SET a.VERSION_CHECK = (a.VERSION + 1)
FROM customers a
WHERE a.technical_key = (SELECT MAX(b.technical_key)
FROM customers b 
WHERE a.customer_id = b.customer_id 
)

从那以后,我一直在尝试使用Oracle中使用的SQL语法中的WHERE EXISTS子句,但我似乎不知道如何正确地使用其中的MAX技术密钥,以便在表中只更新这些行。有人有意见吗?

您可以使用关联子查询:

UPDATE customer c
SET VERSION_CHECK = VERSION + 1
WHERE c.technical_key = (SELECT MAX(c2.technical_key)
FROM customers c2
WHERE c2.customer_id = c.customer_id);

最新更新