所以我需要找到人口最多的部落(表称为pleme) ..为了得到它,我需要组合下面的3个表: naselje和igralec通过pid (玩家id),因为我需要从naselje获得人口,然后通过tid (tribe Id)连接igralec和pleme得到部落的名称。我写了以下代码,它工作得很好:
select p.*, sum(n.population) as populacija
from naselje n, igralec i, pleme p
where n.pid = i.pid and i.tid = p.tid
group by tid
order by populacija desc
limit 1;这里唯一的缺点是限制1查询,因为可能有多个列具有相同的值……必须有一种不使用限制的替代方法来解决这个问题
发布于 2012-05-15 02:17:10
您的查询将始终需要构建整个内部表并按组求和,以便计算出最高人口的答案。所有的限制所做的就是从最终集合中抓取第一个项目。您真正关心的可能是不必对结果进行排序。我想不出比你更好的办法了。
https://stackoverflow.com/questions/10588533
复制相似问题