Как обновить строки с 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
  )
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
Попробуйте решения из аналогичного вопроса со stackoverflow
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы