Задать вопрос

Как обновить строки с M по N?

Нужно обновить строки, кроме первых 5. MariaDB, как оказалось, не поддерживает LIMIT в под-запросах:
This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


Пытался так:
UPDATE table 
SET enabled=0, active=0 
WHERE user_id = 12345
  AND subject_id IN (
    SELECT subject_id FROM table
    WHERE user_id = 12345 AND enabled=1 AND active=1
    ORDER BY updated DESC
    LIMIT 5, 18446744073709551615
  )

В таблице составной главный индекс: user_id, subject_id

Решено. Помогло обернуть в ещё один промежуточный SELECT * FROM (SELECT ... примерно так:
UPDATE table 
SET enabled=0, active=0 
WHERE user_id = 12345
  AND subject_id IN (
    SELECT * FROM (
      SELECT subject_id FROM table
      WHERE user_id = 12345 AND enabled=1 AND active=1
      ORDER BY updated DESC
      LIMIT 5, 18446744073709551615
    ) t1
  )
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
Попробуйте решения из аналогичного вопроса со stackoverflow
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы