【问题标题】:SQL COUNT Rows from another table另一个表中的 SQL COUNT 行
【发布时间】:2017-05-23 10:42:56
【问题描述】:

我正在尝试从另一个表中计算与特定行关联的行数

SELECT * 
  FROM 
     (
       (SELECT COUNT(*) totalusers 
          FROM mox_admin
             , caspartition 
         WHERE mox_admin.partitionid = caspartition.id
       )
     ) tita
     , caspartition 
 ORDER 
    BY caspartition.id DESC 
 LIMIT 0,5

但查询不断返回“moz_admin”表中的总行数

虽然我认为这不是最有效的方法,但这是我所做的

"SELECT * FROM caspartition ORDER BY caspartition.id DESC LIMIT 0, 5";
//execute the query then loop through
    while($partition_data = mysqli_fetch_array($result)) {
        $partition_id = $partition_data['id'];
    $subquery_sql = "SELECT COUNT(*) AS totalusers FROM moz_admin WHERE partitionid = '$partition_id'";
        $subquery_sql = mysqli_fetch_array(mysqli_query($conn, $subquery_sql));
        $no_of_users = $subquery_sql[totalusers];
    }

重点在于将其设为单个 SQL 查询,而不是为我循环遍历的每一行查询表。

提前致谢。

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需结果。

标签: mysql sql


【解决方案1】:

您应该将这些组合成一个查询。查询将是:

SELECT cp.id, COUNT(a.partitionid) as cnt
FROM (SELECT *
      FROM caspartition
      ORDER BY caspartition.id DESC
      LIMIT 0, 5
     ) cp LEFT JOIN
     moz_admin a
     ON a.partitionid = cp.id
GROUP BY cp.id;

【讨论】:

  • 一些声誉较低的问题,所以我无法投票或接受答案并反映它
  • @PeterT。 . .您应该始终能够接受对您提出的问题的回答。
  • 刚刚做了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多