SQL Server : обновите старый идентификатор до нового идентификатора (САМОСТОЯТЕЛЬНО ПРИСОЕДИНЯЙТЕСЬ к ОБНОВЛЕНИЮ)

#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