SQL按重复行计数和排序

时间:2013-12-14 17:41:26

标签: php mysql sql

我找到了另一个有类似问题的帖子,但由于某种原因,该查询对我不起作用。

我有一张这样的表:

  

id | 1 1 5 3 5

我需要使用SQL来回显最重复的数字

例如,那将输出:

  

id | 1 5 3 5

如果这是有道理的。

我将如何实现这一目标?

非常感谢

2 个答案:

答案 0 :(得分:0)

只返回ID ID

SELECT DISTINCT id FROM myTable

ID   |
---------------
1    |
5    |
3    |

请参阅DEMO

返回最重要的带有COUNT的重复ID

SELECT id, COUNT(id) AS Duplicates FROM test
GROUP BY id
ORDER BY Duplicates DESC
LIMIT 1;

ID   |  Duplicates
---------------
1    |  2

// without the LIMIT clause

ID   |  Duplicates
---------------
1    |  2
5    |  2
3    |  1

请参阅DEMO

或者,如您所见,可能有两个ID重复的次数相同。如果它们相同,你可以这样做,这将返回最高重复的ID:

SELECT id, COUNT(id) AS Duplicates
FROM test
GROUP BY id
HAVING COUNT(id) = (
  SELECT COUNT(id) AS great
  FROM test
  GROUP BY id
  ORDER BY great DESC
  LIMIT 1
)

ID   |  Duplicates
---------------
1    |  2
5    |  2

请参阅DEMO

仅仅返回ID纯粹的ID

$results = // query
$results = array_unique($results);

答案 1 :(得分:0)

将一个组与一个计数一起使用,如下所示:

select * from t group by id order by count(id) desc

并添加限制子句以获得单个最重复的值:

select * from t group by id order by count(id) desc limit 1
相关问题