sql >> データベース >  >> RDS >> Mysql

2つのテーブルmysql、1対多の関係を結合します

    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 最初の例の句は集計の前に適用されるため、結果は指定された日付以降に作成されたポイントの数になります。



    1. Windows7x64のRails用のMySQLドライバー

    2. 9.6最も恐ろしいパッチトーナメント

    3. どのSQLクエリに時間がかかりますか? (MYSQL)

    4. SQL Server AlwaysOn(可用性グループ)アーキテクチャとステップバイステップのインストール-1