Нужно обновить строки, кроме первых 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
)