【发布时间】:2012-11-29 23:10:10
【问题描述】:
我有一个如下所示的表:
Table: id, name
一个名字可以出现很多次。我试图找出一个最佳查询,它将为每个名称返回其最高 ID。
输入数据:
1, "a"
2, "a"
3, "b"
4, "a"
5", "b"
输出:
4, "a"
5, "b"
我知道一种在查询的 FROM 部分中使用子查询的方法。我希望我能以某种方式做得更快。
我现在这样做:
SELECT table.*
FROM table, (SELECT MAX(id) maxid FROM table GROUP BY name) maxids
WHERE table.id = maxids.maxid
我很好奇是否有更快的方法!
【问题讨论】:
-
如果您想要更快,(除了我们想知道它是否很慢)使用 Explain 为您的查询添加前缀,然后发布结果,除了 Name 上的索引,虽然我没有看到很多可能性。跨度>