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

1つのSQLクエリ内の複数のカウント

    @VoteyDiscipleの回答 は正しい方向に進んでいますが、彼のクエリにはいくつかの改善が必要です:

    SELECT c.id, c.title,
        SUM(ts1.section_id = 1) AS doc1,
        SUM(ts1.section_id = 2) AS doc2,
        SUM(ts1.section_id = 3) AS doc3,
        SUM(ts1.section_id = 4) AS doc4
    FROM category AS c
      LEFT JOIN category_link_section AS ts1
        ON (c.id = ts1.category_id)
    GROUP BY c.id;
    

    説明:

    • IF() 等式はすでに1または0を返すため、式は冗長です。
    • ts1.section_id=1を取得します 結合条件から外れると、他のsection_idを取得できなくなります 値。
    • c.idでグループ化 それだけ。 OPには、カテゴリごとに1つの行と、各section_idのカウントの列のみが必要であると想定しています。 それぞれのカテゴリの値。クエリがc.id, ts1.section_idでグループ化されている場合 、カテゴリごとに最大4行になります。
    • 選択リストのコンマを移動します。行の先頭に浮かんでいるコンマは見苦しいです。;-)


    1. SQLDeveloperからプロシージャの実行中にエラーが発生する

    2. VB.NETMySQL接続

    3. WHERE条件での重複キー更新時

    4. 選択、変更、および同じテーブルへの挿入