#sql-server
Вопрос:
У меня есть таблица SQL Server, и идентификаторы категорий столбцов ( kategori
) необходимо обновить.
Мне нужно сначала найти id_old
и обновить как новый id
вместо этого:
Как я могу сделать это в пакетном режиме с помощью инструкции T-SQL?
Комментарии:
1. вы можете сделать это с помощью
SELF JOIN
2. да, мне нужно использовать САМОСТОЯТЕЛЬНОЕ ПРИСОЕДИНЕНИЕ в ОБНОВЛЕНИИ. Но как я могу его использовать?
Ответ №1:
использовать SELF JOIN
. Вам нужно использовать другой alias
на столе.
UPDATE t2
SET kategori = t1.id
FROM yourtable t1
INNER JOIN yourtable t2 ON t1.id_old = t2.kategori
WHERE t2.kategory <> 0 -- not sure but you might need this condition
Комментарии:
1. Msg 1013, Уровень 16, Состояние 1, Строка 5 Объекты «модули» и «модули» в предложении FROM имеют одинаковые открытые имена. Используйте имена корреляций, чтобы различать их. ———- МОДУЛИ ОБНОВЛЕНИЯ ЗАДАЮТ категории = moduls.id ИЗ модулей ВНУТРЕННЕЕ СОЕДИНЕНИЕ модулей ПО модулям.id_old = moduls.categori, ГДЕ moduls.categori <> 0
2. вам нужно использовать псевдоним таблицы, как я сделал в своем запросе
3. ОБНОВЛЕНИЕ t2 УСТАНОВИТЕ категорию = t1.id ИЗ модулей t1 ВНУТРЕННИЕ модули СОЕДИНЕНИЯ t2 НА t1.id_old = t2.категория, ГДЕ t2.категория <> 0