mysql - 根据另一个表中的行数对mysql表进行排序

标签 mysql syntax count subquery

我正在尝试根据他们在辅助评论表中链接到他们的评论数量对用户表进行排序,我认为子选择将是最好的工具,但我无法获得正确的语法。

用户表测试数据:

id | user_id
1  | 1000
2  | 1001
3  | 1002

注释表测试数据

id | link_id
1  | 1002
2  | 1000
3  | 1002
4  | 1000
5  | 1002
6  | 1001
7  | 1000
8  | 1002

第一个表中的预期排序结果为:

id | user_id
3  | 1002
1  | 1000
2  | 1001

任何朝着正确方向的插入都会非常有帮助,谢谢! =)

最佳答案

其实没有必要使用子查询。您可以使用 JOIN 和 ORDER BY 计数:

SELECT 
    users.user_id, COUNT(comments.id) as total_messages
FROM 
    users
INNER JOIN 
    comments ON comments.link_id = users.id
GROUP BY 
    user_id
ORDER BY 
    COUNT(comments.id) DESC

关于mysql - 根据另一个表中的行数对mysql表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232672/

相关文章:

r - 计算包含 NA 的向量

mysql - 表达与迁移文件相比,模型文件实际上在做什么?

javascript - Ruby 的 ||=(或等于)在 JavaScript 中?

perl - @$ 和 $$ 在 Perl 中是什么意思?

mysql 选择计数联合

php - fatal error : Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null 中给出

mysql - 如何在sql中获取表名和一列?

mysql - 查询返回空集

mysql - 左连接两个 View 很慢?

c++ - C++ 中的 for-each-loop 用于二维数组