как выбрать 3 случайных предмета из каждой категории? - PullRequest
0 голосов
/ 23 июня 2011

Мне нужна помощь в написании запроса выбора, в основном у меня есть таблица, структурированная как показано ниже:

cat_prod
----------
cid | pid
----------
 1 | 1
 2 | 2
 3 | 3
 4 | 4
 5 | 5
 1 | 2
 2 | 3
 3 | 4
 4 | 5
 5 | 1
 1 | 3
 2 | 4
 3 | 5
 4 | 1
 5 | 2


Теперь я хотел бы выбрать как минимум 3 случайных pid каждого cid, где он существует, или максимальный pidесли меньше 3, как бы я сделать это в одном запросе?Учитывая все вышесказанное, я бы хотел, чтобы запрос был максимально эффективным и чтобы данные таблиц, вероятно, значительно увеличивались.

Спасибо

1 Ответ

0 голосов
/ 23 июня 2011

Хотя могут потребоваться некоторые изменения, следующий запрос почти уместен:

select C.cid, C.pid
from cat_prod C
where C.pid in (select c1.pid from cat_prod c1 order by (pid) limit 3); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...