我需要为我的一个表编写一个更新语句。该表包含一个技术密钥和一个客户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);