我可以从 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/