返回具有计数的唯一值实体?

时间:2013-09-06 07:32:48

标签: mysql count

假设我有一个MySQL表

id (primary key), tag,    entity id
1,                food,   77
2,                shop,   98
3,                food,   32
...

我想返回以减少的条目数排序的相同标签的总计数。阿卡,

tag,     count
food,    2
shop,    1
...

我如何为此编写有效的查询?创建一个单独的计数器表来提高这类查询的效率会不会更好?

谢谢!

2 个答案:

答案 0 :(得分:1)

这样就可以了解

SELECT tag, COUNT(*) `count`
  FROM table1
 GROUP BY tag
 ORDER BY `count` DESC

输出:

|  TAG | COUNT |
|------|-------|
| food |     2 |
| shop |     1 |

这是 SQLFiddle 演示

答案 1 :(得分:0)

根据MySQL Docs,使用GROUP BY索引的最重要前提条件是所有GROUP BY列都引用同一索引的属性。

我猜你的查询会是这样的:

Select tag, count(*) from your_table group by tag order by 2 desc;

因此,您应该对“标记”列编制索引以改进查询。