Рассматривали ли вы ограничение искусственного интеллекта, чтобы выбрать из середины набора записей.Позвольте мне представить идею в примере
Сначала вы хотите выбрать из первого запроса 5 лучших записей.Сделайте заказ в обратном порядке, чтобы он отображался в конце набора записей.Здесь ограничение не применяется.
SELECT field3 FROM table ORDER BY field1 DESC
Пример:
field1 | field2
12 x
11 x
9 x
8 x
7 x
6 x
5 x
4 x
3 x
2 x
1 x
Затем выполните второй запрос в нужном вам порядке.Ограничения здесь не применяются.
SELECT field3 FROM table ORDER BY field2 DESC
Затем объедините их
(SELECT field3 FROM table ORDER BY field1 DESC)
UNION
(SELECT field3 FROM table ORDER BY field2 DESC)
Результаты, которые вы хотите, находятся в середине набора результатов
field1 | field2
11 x
10 x
9 x
8 x
7 x
6 x
----------
5 x
4 x
3 x
2 x
1 x
x 1
x 2
x 3
x 4
x 5
x 6
x 7
x 8
x 9
x 10
----------
x 11
Теперь вы можете применить смещение и ограничение к вашему запросу.Чтобы выполнить эту работу, вам нужно предварительно запросить количество записей в вашей таблице, подходящих для выполнения запроса.
Окончательный запрос будет выглядеть примерно так:
(SELECT field3 FROM table ORDER BY field1 DESC)
UNION
(SELECT field3 FROM table ORDER BY field2 DESC)
LIMIT 5+10 OFFSET N-5
Я написал LIMITS
явно, чтобы иметь возможность рассчитать его самостоятельно, смещение N-5
означает пропуск N-5
записей с начала набора записей.