Mysql 如何使用左侧外部联接获得正确的选择计数(*)总数?
这是我没有JOIN语句的总用户数Mysql 如何使用左侧外部联接获得正确的选择计数(*)总数?,mysql,Mysql,这是我没有JOIN语句的总用户数 mysql> SELECT COUNT(*) AS total -> FROM users; +--------+ | total | +--------+ | 608000 | +--------+ 1 row in set (0.28 sec) 与左外连接 mysql> SELECT COUNT(*) AS total -> FROM users -> LEFT OUTER JOIN u
mysql> SELECT COUNT(*) AS total
-> FROM users;
+--------+
| total |
+--------+
| 608000 |
+--------+
1 row in set (0.28 sec)
与左外连接
mysql> SELECT COUNT(*) AS total
-> FROM users
-> LEFT OUTER JOIN users_icon
-> ON users.uid = users_icon.iconuid
-> LEFT OUTER JOIN icon_code
-> ON users_icon.icondata = icon_code.iconid;
+--------+
| total |
+--------+
| 608084 |
+--------+
1 row in set (3.78 sec)
这里我有不同的总数。使用
LEFT-OUTER-JOIN
如何获得总数为608000?这里,LEFT-OUTER-JOIN
可能会产生更多的计数,因为它还会对用户图标
和图标
表中的表行进行计数。如果users\u icon
或icon\u code
中的对应行为空,则该行也将计数。这是左外部联接的行为
这里,左外部联接
可能会产生更多的计数,因为它还将对用户图标
和图标
表中的表行进行计数。如果users\u icon
或icon\u code
中的对应行为空,则该行也将计数。这是左外联接的行为使用:
计数(distinct users.id)
以获得正确的计数。使用:
count(distinct users.id)
以获得正确的计数。可能是因为表中有多个相关行?尝试此操作,选择count(users.id)作为总计,除非所有三个表之间存在一对一关系,当您将所有行连接在一起时,您不希望有更多行吗?@BryanMoyles应该是count(distinct id)
,您提到的计数将给出相同的结果number@rs.:完全正确。我误读了你的评论!抱歉。可能是因为这些表中有多个相关行?试试这个,选择COUNT(users.id)作为totals,除非这三个表之间有一对一的关系,否则当您将它们连接在一起时,您不希望有更多行吗?@BryanMoyles应该是COUNT(distinct id)
,你提到的计数也会给出同样的结果number@rs.:完全正确。我误读了你的评论!道歉。