php - 根据 MySQL COUNT 结果获取 ID 的位置

标签 php mysql count

我什至不确定这是否已得到回答,因为我什至不知道如何解决这个问题。但这是我想要做的。
我正在使用 COUNT() 创建 30 天期间从上到下的数据的表格表示。

 SELECT id FROM table WHERE col = '123' AND date >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY) AND date <=  LAST_DAY(CURRENT_DATE) GROUP BY id ORDER BY COUNT(id) DESC
我在顶部得到最多的结果
id  | col
==========
id3 | 123
id5 | 123
id2 | 123
id4 | 123
id8 | 123
id5 | 123
id1 | 123
id9 | 123
id7 | 123
这适用于表格 View ,我可以使用 ol 创建一个从 1 到 10 的编号系统。我的问题是,我希望能够告诉任何给定 id 的位置。例如。如果我想在这个计数结果中获得 id9 的位置,即 8,我该怎么做?

最佳答案

如果您使用 MySQL v8.0 或更高版本,您可以使用 the RANK function :

SELECT COUNT(*), RANK() OVER (ORDER BY COUNT(id) DESC) AS r FROM table GROUP BY id ORDER BY COUNT(id) DESC;

对于以前版本的 mysql,您需要自己创建变量:
SELECT COUNT(*), @rank := @rank + 1 AS r FROM table, (SELECT @rank := 0) temp ORDER BY COUNT(id) DESC;
备注 SELECT @rank := 0启动变量。
更新:
选择特定的 id它的排名,你可以使用:
SELECT * FROM (
    SELECT id, COUNT(*), RANK() OVER (ORDER BY COUNT(id) DESC) AS r FROM table GROUP BY id ORDER BY COUNT(id) DESC
    ) ranked WHERE id = ?;

关于php - 根据 MySQL COUNT 结果获取 ID 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66627821/

相关文章:

PHP 分页 - 下一个/上一个按钮

php - 如何从 mysql 获取行到表头以及与获取的表头相关的特定数据

MySQL 更新触发器 : INSERTing the values of the columns that actually changed

mysql - 选择一行mysql条件的多行

mysql - 计算彼此不同的多列的数量

python - 使用 pandas df 分组计算平均值

mysql - 基于连接表的 group by 计数的不同 where 子句列

java - PHP 在 IIS 7 上执行 java

php - Google Oauth2 : Error refreshing the OAuth2 token, 消息: '{ "错误”: "invalid_grant"}'

PHP 第二次循环遍历数组 (foreach)