0

所以我需要找到人口最多的部落(名为 pleme 的表)。要得到它,我需要通过 pid(玩家 ID)组合以下 3 个表:naselje 和 igralec,因为我需要从 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 查询,因为可能有多个具有相同值的列......必须有另一种方法来解决这个问题而不使用 LIMIT

4

1 回答 1

0

您的查询将始终需要构建整个内部表并按组求和,以便找出最高人口的答案。所有限制都是从最后一组中获取第一个项目。您真正关心的可能是不必对结果进行排序。我想不出比你更好的方法了。

于 2012-05-14T18:17:10.450 回答