0

这是我没有 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?

4

2 回答 2

2

利用:

count(distinct users.id)得到正确的计数。

于 2012-05-10T17:56:50.243 回答
1

在这里,LEFT OUTER JOIN可能会产生更多的计数,因为它还会计算表中的行数users_iconicon_code表。如果users_iconoricon_code中的相应行为空,它也将计数。这是 的行为LEFT OUTER JOIN

于 2012-05-10T17:44:22.390 回答