Mysql:按第二个表中匹配行的数量对结果进行排序

标签 mysql

我不确定如何表达这个问题,所以请耐心等待。

表 A 包含以下列:

  • ID
  • 姓名
  • 描述

表 B 包含以下列:

  • ID
  • a_id(表 A 的外键)
  • ip_地址
  • 日期

基本上,每当用户查看表 A 中的一行时,表 B 就包含一行。

我的问题是如何根据表 B 中的匹配行数对表 A 结果进行排序。

SELECT * 
  FROM TableA 
ORDER BY (SELECT COUNT(*) 
            FROM TableB 
           where TableB.a_id = TableA.id)

谢谢!

最佳答案

    SELECT a.*
         , b.cnt
      FROM TableA a
   LEFT OUTER JOIN (SELECT a_id
                         , COUNT(*) cnt
                      FROM TableB b
                   GROUP BY a_id) b
   ON a.id = b.a_id
     ORDER BY b.cnt

关于Mysql:按第二个表中匹配行的数量对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869376/

相关文章:

php - 如何在新文件中插入mysql数据库?

MySQL通过table1 + table2更新table1然后将table2设置为0

php数组过滤数据插入到mysql

mysql - 互联网上的 MySQL 集群对于在线备份来说是一个好主意吗?

mysql - 快速将值插入 MySQL 数据库

MySQL - 选择与其他字段不同的字段

mysql - 限制使用不在查询中检查的行 - SQL

MySQL插入记录

php - Mysql Php Sum() 乘法?

mysql - sql查询某个条件