你可以使用这样的东西:
select p.pid,
p.name,
up.TotalUsers
from projects p
inner join
(
select pid, count(uid) TotalUsers
from users_projects
group by pid
) up
on p.pid = up.pid
order by TotalUsers Desc
-- limit 1
请参阅带有演示的 SQL Fiddle
这将返回所有项目的列表和每个项目的总用户数。如果您想返回项目将最多的用户,那么您将包括limit 1
被注释掉的那个。
如果您有多个project
用户具有相同数量的用户,那么您可能需要使用类似于以下内容的内容:
select p.pid,
p.name,
up.TotalUsers
from projects p
inner join
(
select pid, count(uid) TotalUsers
from users_projects
group by pid
) up
on p.pid = up.pid
where totalusers = (select count(*) Total
from users_projects
group by pid
order by total desc
limit 1)
请参阅带有演示的 SQL Fiddle
感谢@JW的小提琴