mysql count only for distinct values in joined query

南笙酒味 提交于 2020-01-05 12:34:13

问题


WOW! That's a weird title, but I'm happy you're looking, cause I couldn't find another way to say it.

I have a table of people and a table of links to photos and videos. I join the people to the media, and of course a person can have more than one piece of media.

I am attempting to grab the first 30 people and all of their media in one query, but when I say LIMIT 0,30. Of course I'll only get the first 30 media files, which could be 10 people.

Before I make the query, I don't know how many media files each person is going to have. Is there a way I can say LIMIT DISTINCT(uid 0,30)????

or something like that?


回答1:


Can you use subqueries in your version of 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



回答2:


FWIW, here's another query that should return the same result:

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);

Note that when you use LIMIT, you should always use an ORDER BY. Otherwise there is no guarantee which thirty users you'll get.



来源:https://stackoverflow.com/questions/508707/mysql-count-only-for-distinct-values-in-joined-query

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!