ragnar_ok
@ragnar_ok

Как получить по лимиту данные из одной таблицы по разным критериям?

Дано 100 ID. По условию задачи нужно для каждого ID получить по N записей. Наверное, лучше уж сотню запросов сделать, чем сотню UNION или JOIN. Поэтому на данный момент единственным решением видится N+1:

SELECT ... WHERE ID = 1 LIMIT 5
SELECT ... WHERE ID = 2 LIMIT 5
SELECT ... WHERE ID = 3 LIMIT 5
...
SELECT ... WHERE ID = 100 LIMIT 5

Группировкой можно получить только по одной записи:
SELECT * FROM TABLE WHERE ID IN (1, 2, ..100) GROUP BY ID.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY RAND()) rn
              FROM ...
              WHERE ID IN (1, 2, ..100) )
SELECT *
FROM cte
WHERE rn <= 5
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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