Обновление х строк из таблицы MySQL

0

У меня есть эта таблица:

Таблица ___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

Благодарю.

Теги:

1 ответ

0
Лучший ответ

Присоединитесь к подзапросу, который возвращает два самых высоких идентификатора.

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'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню