Это мой первый пост здесь, поэтому извиняюсь, если я нарушаю протокол.Применять OFFSET и LIMIT отдельно к подразделам результата
У меня есть одна таблица, которая ради аргумента я называю t1, таблица выглядит следующим образом:
id -- primary key
fk_id -- foreign key
date_created
У меня есть набор fk_id из предыдущего запроса.
Вот запрос, который возвращает именно то, что я хочу, но использует UNION, и было бы очень неэффективно для сотен или, возможно, тысячи fk_id я, возможно, придется искать по:
SELECT *
FROM t1
WHERE fk_id = ?
ORDER BY date_created DESC
LIMIT m, n
UNION
SELECT *
FROM t1
WHERE fk_id = ?
ORDER BY date_created DESC
LIMIT m, n
UNION -- ... for each fk_id
Обратите внимание, что значения m и n для смещения и предела одинаковы для каждого UNION.
То, что я хотел бы запрос, который не использует UNION и вместо этого говорит что-то вроде
WHERE fk_id IN (?, ?, ?, ...)
, но сохраняет за собой отдельное приложение к предельному каждому подмножеству.
«Это сумасшествие, но это может сработать!» :-) - Спасибо, я попробую. –
Спасибо за это, второй пример ошибок с 'ERROR 1235 (42000): эта версия MySQL еще не поддерживает« LIMIT & IN/ALL/ANY/SOME subquery », но ваш первый ответ работает, есть выход -one error на 'WHERE rn> = m и rn
@BillHails. , , К сожалению, я забыл об ограничении MySQL. Синтаксис работает в большинстве других баз данных. –