ORACLE SQL-每个ID的最大技术密钥更新声明
我需要为我的表写一个update语句。 该表包含一个技术密钥和一个客户ID 我需要通过将字段提升为+1来更新此表中的字段,但仅适用于技术密钥为该特定客户ID的最大值的字段 起初,我试着用我通常在MSSQL上的方式来写这篇文章:ORACLE SQL-每个ID的最大技术密钥更新声明,sql,oracle,join,sql-update,Sql,Oracle,Join,Sql Update,我需要为我的表写一个update语句。 该表包含一个技术密钥和一个客户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)
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);
@TimBiegeleisen。在Oracle中,查询将返回语法错误,因为不允许使用
FROM
,并且更新中可能无法识别a
。谢谢您提供的解决方案。它确实起了作用。我确实试过这样的东西,但我一定是写错了。再次感谢!(以及我文章编辑中的其他撰稿人)