GROUP BY
を使用する必要があります どのグループに基づいてカウントするかを説明します。 GROUP BY
なし ご覧のとおり、結果セット全体の1つのグループを取得するだけです。
標準SQLでは、GROUP BY
に含める必要があります SELECT
に含まれるすべての非集計式に句を付ける ただし、MySQLを使用すると、これを行わなくても、次のような式を使用できます。 (少なくとも、厳密モードでない場合。厳密モードがこの要件を強化して標準SQLに一致させるかどうかはわかりません)
SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`
items.id
と仮定します はこのテーブルの主キーであるため、items
の複数の行に表示されることはありません。 、これは望ましい効果をもたらすはずです。
GROUP BY
を紹介したら WHERE
の違いを理解することが重要です およびHAVING
条項。前者は前の条件を適用します グループと集計が適用され、後者は後で適用されます 。つまり、HAVING
を使用する必要があります そのカウントに基づいて条件付きを実行したい場合。 WHERE
最初の例の句は集計の前に適用されるため、結果は指定された日付以降に作成されたポイントの数になります。