Мне нужно обновить несколько строк в таблице БД.То, как я определял строки, подлежащие обновлению, включало в себя ряд сложных операторов, и мне удалось свести их к серии операторов 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
Теперь у меня есть два столбца данных, и я хочу использовать их для обновления таблицы.Таким образом, вместо выбора в нижней части, я попробовал все виды комбинаций слияний и обновлений, включая использование оператора WITH над UPDATE / MERGE или как часть оператора 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.У меня есть примеры использования операторов WITH в сочетании с INSERT, поэтому поверьте, что это возможно.
Если кто-то может помочь, это было бы здорово, и, пожалуйста, дайте мне знать, если я опущу любую информацию,быть полезным для решения проблемы.
Отказ от ответственности: Приведенный мною пример представляет собой упрощенную версию того, что я пытаюсь сделать, и на самом деле может не иметь никакого смысла!