我需要更新数据库表中的一些行。我如何识别要更新的行涉及一系列复杂的语句,我设法将它们归结为一系列 WITH 语句。现在我有了正确的数据值,我需要更新表格。
由于我设法通过 WITH 语句获取这些值,因此我希望在 UPDATE/MERGE 中使用它。一个简化的例子如下:
with data1
(
ID_1
)
as
(
Select ID
from ID_TABLE
where ID > 10
)
,
cmedb.data2
(
MIN_ORIGINAL_ID
,OTHER_ID
)
as
(
Select min(ORIGINAL_ID)
,OTHER_ID
from OTHER_ID_TABLE
where OTHER_ID in
(
Select distinct ID_1
From data1
)
group by OTHER_ID
)
select MIN_ORIGINAL_ID
,OTHER_ID
from cmedb.data2
现在我有两列数据,我想用它们来更新一个表。因此,我没有在底部使用 select,而是尝试了各种合并和更新的组合,包括在 UPDATE/MERGE 上方使用 WITH 语句,或者作为 UPDATE/MERGE 语句的一部分。以下是我认为最接近我想做的事情:
merge into ID_TABLE as it
using
(
select MIN_ORIGINAL_ID
,OTHER_ID
from cmedb.data2
) AS SEL
ON
(
it.ID = sel.OTHER_ID
)
when matched then
update
set it.ORIGINAL_ID = sel.MIN_ORIGINAL_ID
所以它不起作用。我不确定这是否可行,因为我在互联网上没有找到将 WITH 语句与 UPDATE 或 MERGE 结合使用的示例。我有与 INSERT 一起使用 WITH 语句的示例,因此相信它是可能的。
如果有人可以提供帮助,那就太好了,如果我遗漏了任何有助于解决问题的信息,请告诉我。
免责声明:我提供的示例是我正在尝试做的简化版本,实际上可能没有任何意义!