MySql选择排序查询后的条件,条件>>

问题描述 投票:0回答:1

数据库:

  • 用户-ID,名称
  • 消息-发件人,详细信息,收件人
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`...

mysql sql where-clause rank
1个回答
1
投票

您需要对当前查询进行子查询,然后限制为所需的id

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.