我得到以下错误,
错误'Found ' UPDATE ':需要:(SELECT -or-,.....循环或搜索)
...运行以下代码时:
WITH CTE AS (
Select id, ROW_NUMBER() OVER (ORDER BY ID) + 99 AS New_id
From table_1
Where ID between 155662 AND 166046
)
UPDATE TABLE_1
SET ID =CTE.NEW_id
From CTE
WHERE TABLE_1.Id = CTE.id;
我需要这样做的原因是,通过rabbitmq,我不小心将数据发送到错误的表,其中包括自动生成的ID,但我现在想更新我错误添加的那些行的ID,以便与正确的表相对应,然后我将它们插入到正确的表中,然后从table_1中删除。我希望只对那些错误添加的行进行编号,以便与目标表中的编号相匹配。请注意,该表被设置为始终生成,为了进行更改,我将其更改为默认生成。
我尝试了这个代码,但一直得到这个错误。在尝试这个之前,我有一个稍微简单的代码,但后来得到了一个错误的东西做一个窗口,所以在线搜索,这是解决方案。
我在Oracle ToAD上运行这个
任何帮助非常感谢。
2条答案
按热度按时间qvk1mo1f1#
我使用MSSQL和MySQL,所以这是一个经过研究的答案。我相信在Oracle中,你可以在派生查询中引用
outside tables
。如果这是正确的,我认为这应该是可行的:rkue9o1l2#
只能对
SELECT
语句使用WITH
。如果您需要一个派生视图来驱动更新,请使用MERGE
命令: