MySQL Construct返回已排序的计数列表

时间:2014-09-30 21:54:34

标签: mysql sql

假设我有一个包含四列的表TABLE,COL 1..4

COL1   COL2   COL3   COL4
Truck  Toyota Pickup 5000
Car    Lexus  Sedan  3000
Car    Lexus  Sedan  6000
Truck  Toyota Pickup 2000
Car    Lexus  Sedan  2000

我需要能够从查询中返回所有唯一COL1(在这种情况下为卡车,汽车)以及从最高总计数排序的事件总数以及可能的其他一些字段(例如COL2) )虽然不需要对这些工作进行任何工作,因为唯一性仅基于一列,因此在这种情况下将返回:

Car   Lexus  3
Truck Toyota 2

这似乎微不足道,但我不确定如何以最有效的方式执行查询(MySQL)(可能会每秒进行数百次)。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

这很简单:

  SELECT col1, col2, COUNT(*) count
    FROM table1
GROUP BY col1, col2 /* I like to include all non-aggregate cols for sanity */
ORDER BY count DESC

哦,你至少需要col1的索引。

所有非聚合列(col1,col2)上的覆盖索引可以进一步提高性能,因为可以从索引满足查询。