【发布时间】:2014-12-24 10:42:35
【问题描述】:
我在 MySQL 中有这样的表:
troll_id troll_family_id troll_name troll_birth_timestamp
--------------------------------------------------------------------
1 1 Kamil 100000
2 1 Bartek 200000
3 2 Maciek 100000
4 2 Andrzej 200000
troll_family_id troll_family_name
------------------------------------------
1 Trollowski
2 Trollowicz
我想得到only one the youngest Troll from every famillies
所以我想得到这样的行:
troll.troll_name
-----------------
Bartek
Andrzej
我在数据库中有几百万个巨魔,我尝试过这样的查询:
SELECT troll.troll_name
FROM troll
GROUP BY troll.troll_family_id
ORDER BY troll.troll_birth_timestamp DESC
LIMIT 0, 50
但它冻结了我对 http 的响应。所以我什至不知道,这个查询是否正确。
【问题讨论】:
-
你的表是否使用索引?
-
如果没有索引,请尝试将索引添加到您的表中
-
是的,在 troll_id 和 troll_family_id 和 troll_birth_timestamp 中
-
troll_id 是一个 PK,所以它已经被索引了。 troll_name 是最重要的。因为在选择所有匹配的巨魔引擎后,可以创建一个内存表并使用它来执行进一步的处理。
-
不要做所有行,而是选择:
WHERE troll_birth_timestamp < '???'
标签: mysql sql select group-by greatest-n-per-group