MySQL / PHP: ведение дополнительной записи во время подкачки
Вопрос
У меня есть список записей, которые я хочу просмотреть с помощью LIMIT, однако первая запись, которая возвращается без LIMIT, также является корневым идентификатором для остальных записей, и мне нужно сохранять его для каждой страницы. Это возможно? (Я бы предпочел не запускать дополнительный SQL-оператор)
id | index | title
1 | 0 | index of titles
2 | 1 | title1
3 | 1 | title2
4 | 1 | title3
5 | 1 | title4
LIMIT 3, 2 должен возвращаться ...
id | index | title
1 | 0 | index of titles
4 | 1 | title3
5 | 1 | title4
Решение
SELECT *
FROM (
SELECT *
FROM mytable
WHERE index = 0
ORDER BY
index, id
LIMIT 1
) q
UNION ALL
(
SELECT *
FROM mytable
WHERE index = 1
ORDER BY
index, id
LIMIT 3, 2
) q2
Если у вас есть составной ключ в (index, id)
(в MyISAM
) или просто индекс в index
(в InnoDB
), первый запрос почти ничего не будет стоить.
Не связан с StackOverflow