mysql - mysql中的子查询计数

标签 mysql count subquery

我有以下查询,它成功地获取了我想要的数据......

$query  = @"SELECT table1.user_id, table1.col8, table2.col5, user_tokens.expiry
FROM table1 
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id 
WHERE table1.col2 = '{$userName}'";

我一直在尝试使用它来为我提供一些额外的数据而无需第二次查询。我想要的数据是来自另一个表的行计数 - 表 10(也有 user_id 作为列),其中 user_id 列匹配。

所以像...

,

(SELECT COUNT(*) FROM table) as userDataCount

目前为我提供整个表的行数,而不仅仅是与 table1 具有相同 user_id 的行数

我认为我所做的内部连接只会计算 table10 的行,其中 user_id 列与查询的其余部分匹配,以及我尝试连接 table10 的不同方式,或者使用额外的 WHERE 来表示 WHERE table10.user_id = table1.user_id 失败。

有没有一种简单的方法可以做到这一点,还是我需要两个单独的查询?

最佳答案

对此有许多可能的解决方案,其中一个我已说明,是通过子查询加入,该子查询分别获取每个组的总数。

SELECT  table1.user_id, 
        table1.col8, 
        table2.col5, 
        user_tokens.expiry,
        COALESCE(b.totalDataCount, 0) userDataCount
FROM    table1 
        INNER JOIN table2
            ON table1.user_id=table2.user_id
        INNER JOIN user_tokens
            ON user_tokens.user_id=table1.user_id 
        INNER JOIN
        (
            SELECT  user_ID, COUNT(*) totalDataCount
            FROM    table10
            GROUP   BY user_ID
        ) b ON  b.user_id = table1.user_id
WHERE   table1.col2 = '{$userName}

关于mysql - mysql中的子查询计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825204/

相关文章:

mysql - MySQL 如何解释 VARCHAR 字段大小?

mysql - 从忽略周末的日期中减去天数

php - 更新父行时子行消失

mysql - 通过 SSH 在 AWS RDS MySQL 数据库实例上执行查询

c++ - 计算文本文件中每个单词的出现次数

python - 在 Django 中,我如何在单个查询中根据不同的字段值获取总行数?

MySQL 计数日期

mysql where子句子查询不识别外部查询中的表别名

mysql - 发出子查询以在同一个表中的表中插入值

php - 使用 PDO 更新旧的 Mysql 语句