Это одна раздражающая проблема, и я не могу понять, как ее решить.Я использую Microsoft SQL Server 2008.
Итак, у меня есть две таблицы, и мне нужно обновить обе.У них общий ключ, скажем, id.Я хочу обновить Table1
некоторыми вещами, а затем обновить строки Table2
, которые были соответственно изменены в Table1
.
Проблема в том, что я не совсем знаю, какие строки были изменены, потому что яЯ выбираю их случайным образом с помощью ORDER BY NEWID()
, поэтому я, вероятно, не могу использовать JOIN
на Table2
.Я пытаюсь сохранить необходимые данные, которые были изменены в моем запросе для Table1
, и передать их в Table2
Это то, что я пытаюсь сделать
CREATE TABLE IDS (id int not null, secondid int)
SELECT [Table1].[id], [Table1].[secondid]
INTO IDS
FROM
(
UPDATE [Table1]
SET [secondid]=100
FROM [Table1] t
WHERE t.[id] IN
(SELECT TOP 100 PERCENT t.[id] FROM [Table1]
WHERE (SOME_CONDITION)
ORDER BY NEWID()
)
)
UPDATE [Table2]
SET some_column=i.secondid
FROM [Table2] JOIN IDS i ON i.id = [Table2].[id]
Но я получаю
Неверный синтаксис рядом с ключевым словом «ОБНОВЛЕНИЕ».
Итак, вопрос: как я могу решить синтаксическую ошибку или это лучший способ сделать это?
Примечание: запрос, заключенный в круглые скобки первого FROM
, работал до появления этого нового требования, поэтому я сомневаюсь, что там есть проблема.Или, может быть?
EDIT : Изменение второго UPDATE
, как предложено skk, все еще приводит к той же ошибке (точно в строке ниже, содержащей UPDATE
):
UPDATE [Table2]
SET some_column=i.secondid
FROM [Task] JOIN IDS i on i.[id]=[Table2].[id]
WHERE i.id=some_value