У меня есть эта таблица:
Таблица ___Units
|--------|------------|
| UNI_Id | UNI_Status |
|--------|------------|
| 1 | active |
| 2 | active |
| 3 | active |
| 4 | active |
| 5 | active |
| 6 | active |
|--------|------------|
Как я могу обновить статус inactive
для двух последних созданных строк (таким образом, самый высокий UNI_Id), только если текущий статус active
.
Вот что я попробовал:
UPDATE ___Units SET UNI_Status='inactive' WHERE (
SELECT * FROM ___Units ORDER BY UNI_Id DESC LIMIT 2
) sub
ORDER BY UNI_Id ASC
Благодарю.
Присоединитесь к подзапросу, который возвращает два самых высоких идентификатора.
UPDATE ___Units AS u1
JOIN (
SELECT UNI_Id
FROM ___Units
ORDER BY UNI_Id DESC
LIMIT 2) AS u2 ON u1.UNI_Id = u2.UNI_Id
SET u1.UNI_Status = 'inactive'
WHERE u1.UNI_Status = 'active'