0

MySQL データベースに User テーブルと Order テーブルがあります。1 人のユーザーが複数の注文を持つことができます。

私は注文をしたことがないユーザーの数を見つけようとしており、これのバリエーションを試しました:

// Incorrect query
SELECT count(u.id)
FROM user AS u
WHERE count(u.o) = 0
LEFT OUTER JOIN order AS o
ON o.user_id = u.id
;

これを行う正しい方法は何ですか?

4

3 に答える 3

4
SELECT COUNT(id) FROM user WHERE id NOT IN (SELECT user_id FROM order);

これは簡単で効果的です。入っていないもの(つまり、配置したことがないもの)をすべて表示idします。userorder

于 2013-10-01T05:53:26.740 に答える
0

を使用してこれを行うことができますleft join

SELECT count(u.id)
FROM user AS u
LEFT OUTER JOIN order AS o
    ON o.user_id = u.id
WHERE o.user_id IS NOT NULL
于 2013-10-01T06:07:25.347 に答える
0

次のように使用できますNOT EXISTS

SELECT COUNT(ID) FROM USER
  WHERE NOT EXISTS ( SELECT USER_ID FROM ORDER);
于 2013-10-01T05:58:27.133 に答える