MySQL счетчик только для отдельных значений в объединенном запросе - PullRequest
1 голос
/ 03 февраля 2009

WOW! Это странное название, но я рад, что ты выглядишь, потому что я не мог найти другой способ сказать это.

У меня есть таблица людей и таблица ссылок на фотографии и видео. Я присоединяю людей к средствам массовой информации, и, конечно, у человека может быть более одного материала.

Я пытаюсь собрать первых 30 человек и все их медиа в одном запросе, но когда я говорю LIMIT 0,30. Конечно, я получу только первые 30 медиа-файлов, которые могут быть 10 человек.

Прежде чем я сделаю запрос, я не знаю, сколько медиа-файлов будет у каждого человека. Есть ли способ сказать, что LIMIT DISTINCT (uid 0,30) ????

или что-то в этом роде?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2009

Можете ли вы использовать подзапросы в вашей версии MySQL?

select *
from media m
inner join
     ( select uid
     from users_tbl
     limit 0,30) map
  on map.uid = m.uid
inner join users_tbl u
  on u.uid = m.uid
1 голос
/ 04 февраля 2009

FWIW, вот еще один запрос, который должен вернуть тот же результат:

SELECT *
FROM media m INNER JOIN users_tbl u USING (uid)
WHERE u.uid IN (SELECT uid FROM users_tbl ORDER BY uid LIMIT 0,30);

Обратите внимание, что когда вы используете LIMIT, вы всегда должны использовать ORDER BY. В противном случае нет гарантии , что тридцати пользователей вы получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...