0
------------
| id | tid |
------------
| 1  | 0   | 2x 0
| 2  | 1   | 3x 1
| 3  | 3   | 3x 2
| 4  | 3   | 6x 3
| 5  | 3   | 1x 17
| 6  | 17  |
| 7  | 2   |
| 8  | 3   |
| 9  | 0   |
| 10 | 3   |
| 11 | 2   |
| 12 | 1   |
| 13 | 1   |
| 14 | 3   |
| 15 | 2   |
------------

你好再次stackoverflow!

我有如下表格。该表每隔几分钟就会添加一个数字。id是一个auto_increment值,tid是要添加的 ID。tid可以是从 0 开始的任何数字,也可以是任何顺序。

我想得到前 4 个最常见的数字tid。例如,这里的前 3 名将是:

1 . 3
2 . 1
3 . 2

但这只是一个例子。

我怎样才能做到这一点?我可以将其限制为仅使用 MySQL 还是我还需要使用 PHP?如果是这样,我会怎么做?

问候

4

2 回答 2

2
SELECT tid, COUNT(tid) AS occurences
 FROM table
 GROUP BY tid
 ORDER BY occurences DESC
 LIMIT 4
于 2013-09-12T18:25:40.130 回答
0
SELECT COUNT(id) AS total, tid 
FROM `table` 
GROUP BY tid 
HAVING total>0 
ORDER BY total DESC 
LIMIT 3
于 2013-09-12T18:27:46.423 回答