Как обновить таблицу, используя объединение двух таблиц? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть таблица с этими столбцами:

Id int, Reference varchar(50), FileId int

Столбец «Ссылка» всегда заканчивается буквой «D» или «C».FileId необходимо обновить.При обновлении у меня есть переменная таблицы:

DECLARE @fileIds TABLE (
  Id int NOT NULL,
  [Type] varchar(1) NOT NULL
);

Эта табличная переменная всегда имеет максимум 2 записи и как минимум 1 запись.Столбец Type имеет значение «D» или «C»

Теперь мне нужно обновить таблицу, установив FileId в соответствии с соответствующим идентификатором файла.Это правильный способ сделать обновление:

UPDATE myTable 
SET 
    FileId = f.Id
FROM
    myTable
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = p.[Type]

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Я думаю, что пропущен псевдоним, но вы использовали два разных псевдонима. Таким образом, столбцы «Ссылка» и «Тип» относятся к тем таблицам, к которым они принадлежат, поскольку используют псевдонимы других пользователей.

Обновление с использованием синтаксиса соединения.

UPDATE
    A
SET 
    A.FileId = B.Id
FROM 
    tableA AS A
INNER JOIN 
    tableb AS B ON A.Id = B.Id
0 голосов
/ 08 апреля 2019

вы пропустили псевдоним mytable

UPDATE s 
SET 
    FileId = f.Id
FROM
    myTable s
    INNER JOIN @fileIds f ON RIGHT(s.Reference, 1) = f.[Type]
...