Возможно ли нам использовать CTE для выполнения нескольких команд обновления?ИСПОЛЬЗОВАНИЕ Выражения общей таблицы и выполнение нескольких команд обновления
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.FOO = 1;
UPDATE
Query.BAR = 2;
В примере Query больше не доступен для второй команды UPDATE.
EDIT:
Мой рабочий код выглядит следующим образом:
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.FOO = 1
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.BAR = 2;
Поскольку вы не можете обновить две таблицы с командой один UPDATE мне нужны две команды обновления. Проблема заключается в том, что если мне нужно изменить Select в CTE, я должен сделать это в двух местах в коде.
синтаксис регулярного обновления - это «таблица UPDATE table col1 = 1, col2 = 2», почему бы не установить оба столбца в том же самом выражении ? также я никогда не использовал cte с обновлением, поэтому не уверен, что он будет работать. – Jeremy
Это не относится к SQL Server. Команда UPDATE в SQL позволяет одновременно обновлять многие столбцы. Однако сложная часть состоит в том, что этот код пытается обновить * две таблицы *. –
Можете ли вы объяснить, что вы на самом деле пытаетесь сделать? Похоже, вы просто обновляете каждую запись в двух таблицах до одного значения. –