Я только что понял, что собирал неправильные данные для одного столбца в моей таблице. Я исправил проблему, однако данные, которые я захватил до сих пор, остаются неверными.
Назовем мои таблицы 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.
Я знаю, что сделал что-то глупое. Что я здесь сделал не так?