数据库:
SELECT
id, COUNT(sender) AS COUNT,
RANK() OVER (ORDER BY COUNT(sender) DESC) count_rank
FROM
`message`
LEFT JOIN
`user` ON id = sender
GROUP BY
sender
ORDER BY
COUNT(sender) DESC;
+----+-------+-----------+
| id | count | count_rank|
+----+-------+-----------+
| 7 | 20 | 1 |
| 4 | 18 | 2 |
| 9 | 18 | 2 |
| 2 | 7 | 4 |
| 5 | 4 | 5 |
+----+-------+-----------+
在此输出上,我只想获取ID 9计数和排名
我尝试
SELECT
id, COUNT(sender) AS COUNT,
RANK() OVER (ORDER BY COUNT(sender) DESC) count_rank
FROM
`message`
LEFT JOIN
`user` ON id = sender
WHERE
`message`.`sender` = 9
GROUP BY
sender
ORDER BY
COUNT(sender) DESC;
但是我的排名是错误的
我的结果:Id 9 rank 1
预期:Id 9 rank 2
数据库:用户-ID,名称消息-发送方,详细信息,接收方SELECT ID,COUNT(发送方)作为计数,RANK()超过(按COUNT(发送方)DESC排序)count_rank FROM`message` LEFT JOIN`...
您需要对当前查询进行子查询,然后限制为所需的id
: