mysql - 特定表中特定列的查询计数 JOIN 其他表具有相同的列?

标签 mysql join


我可以从 server_homes 获取 home_id 的计数,但是当我进行 NATURAL JOIN user_homes 时(该表具有相同的列 home_id > 具有相同的值) count 的结果是多个(如果实际结果是 2,则 count 是 4)。

我使用的代码是:

        return $this->resultQuery('SELECT COUNT(home_id) AS total FROM `'.$this->table_prefix.'server_homes`

        '.($search_field ? '
        NATURAL JOIN `'.$this->table_prefix.'user_homes`
        NATURAL JOIN `'.$this->table_prefix.'remote_servers` 
        NATURAL JOIN `'.$this->table_prefix.'home_ip_ports`

        ' : '').'
        ');

最佳答案

这里的问题是 home_id 在所有表中并不是唯一的。我猜想同一栋房子会有多个家庭 IP 端口或多个远程服务器。这意味着您的总行数将为#server home + #dupes user home + #dupes 远程服务器 + #dupes home IP 端口。

解决这个问题的方法是确保只对 ID 进行一次计数:

SELECT COUNT( DISTINCT( `home_id` ) ) FROM 
   -- Yada yada

关于mysql - 特定表中特定列的查询计数 JOIN 其他表具有相同的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44553673/

相关文章:

sql - 更详细地解释 JOIN 与 LEFT JOIN 和 WHERE 条件性能建议

mysql - 我的多表连接中的语法错误在哪里?

mysql - Laravel Eloquent 获取父记录、子记录和子记录

mysql - 提高查询速度 : simple SELECT from SELECT in huge table

PHP Openssl 解密 AES Mysql 加密

mysql - 检查用户匹配数组是否作为具有匹配列的链接表中的条目存在

连接包含 BLOB 的表时,MySQL 查询速度很慢

mysql加入和分组

mysql - 如何在 mysql 中正确执行 LOOP

php - chrome连接mysql