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もカウントされます。またはの対応する行がnullの場合、それもカウントされます。の振る舞いです。users_iconicon_codeusers_iconicon_codeLEFT OUTER JOIN

于 2012-05-10T17:44:22.390 に答える