这是我没有JOIN语句的总用户。
mysql> SELECT COUNT(*) AS total
-> FROM users;
+--------+
| total |
+--------+
| 608000 |
+--------+
1 row in set (0.28 sec)
使用LEFT OUTER JOIN
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?
答案 0 :(得分:2)
使用:
count(distinct users.id)
以获得正确的计数。
答案 1 :(得分:1)
此处,LEFT OUTER JOIN
可能会产生更多计数,因为它还会计算users_icon
和icon_code
表中的表行。如果users_icon
或icon_code
中的相应行为空,则它也会计数。这是LEFT OUTER JOIN
的行为。