#sql #sql-server #sql-update
#sql #sql-сервер #sql-обновление
Вопрос:
У меня есть такая таблица.
ID | ParentId | Level | LevelStatus
1 1 5 NULL
2 1 6 NULL
3 2 4 NULL
4 2 2 NULL
5 3 2 NULL
Мне нужно обновить столбец LevelStatus значением 1 для каждого минимального уровня родительского идентификатора. Например, самым низким уровнем для родительского идентификатора 1 является уровень 5, поэтому он должен обновлять только эту запись, для родительского идентификатора 2 он должен обновлять запись, где уровень равен 2.
Я знаю, как выбрать правильные записи. Что-то вроде этого:
SELECT DISTINCT ParentId, MIN(Level) AS MinLevel
FROM TableA
GROUP BY ParentId
Но не знаю, как использовать его для написания инструкции update.
Комментарии:
1. Пометьте свой вопрос базой данных, которую вы используете.
2. Не сохраняйте значения в зависимости от других табличных данных, это приведет только к несогласованности данных. Вместо этого создайте представление.
Ответ №1:
Вы можете использовать коррелированный подзапрос:
update tablea
set levelstatus = 1
where level = (select min(a2.level)
from tablea a2
where a2.parentid = a.parentid
);
Это стандартный синтаксис SQL и должен работать в любой базе данных … кроме MySQL и MariaDB.