Как обновить данные одного столбца, используя данные другой таблицы TSQL

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

Назовем мои таблицы TableIWantToCorrectиTableWithIDs

В TableIWantToCorrectу меня есть внешний ключ TableWithIDs. Вот это неправильно.

Я могу исправить данные, сравнив подстроку столбца в TableIWantToCorrectсо столбцом в TableWithIDs.

Итак, в настоящее время у меня есть

ТаблицаIWantToCorrect

Name            ForeignKey
123-abc-123        15
456-def-456        15
789-ghi-789        15

Таблица с идентификаторами

CompareName    id
abc            1
def            2
ghi            3

Поэтому я хочу обновить TableIWantToCorrect, чтобы иметь правильное значение ForeignKey, когда подстрока в имени равна подстроке в имени сравнения. Позиция подстроки всегда одна и та же, поэтому я могу использовать метод Substring.

Моя попытка:

Update TableIWantToCorrect
SET ForeignKey =
       (SELECT id 
        FROM TableWithIDs 
        WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))

Результат:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <=, >, >= or when the subquery is used as an expression. The statement has been terminated.

Я знаю, что сделал что-то глупое. Что я здесь сделал не так?

5
задан marc_s 11 July 2012 в 14:39
поделиться