Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ORACLE SQL-每个ID的最大技术密钥更新声明_Sql_Oracle_Join_Sql Update - Fatal编程技术网

ORACLE SQL-每个ID的最大技术密钥更新声明

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语句。 该表包含一个技术密钥和一个客户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);

@TimBiegeleisen。在Oracle中,查询将返回语法错误,因为不允许使用
FROM
,并且
更新中可能无法识别
a
。谢谢您提供的解决方案。它确实起了作用。我确实试过这样的东西,但我一定是写错了。再次感谢!(以及我文章编辑中的其他撰稿人)