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

MySQL複数の内部結合でSUMとCOUNTを使用するときに、重複する行を含めないようにするにはどうすればよいですか?

    これが1つの解決策です。まず、派生テーブル内の個別の行にセットを減らしてから、その結果にGROUPBYを適用します。

    SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
    FROM (
      SELECT DISTINCT p.id, p.status, p.value, pc.library_id
      FROM props p
      INNER JOIN p_contents AS pc ON p.id = pc.prop_id
      INNER JOIN contents AS c ON c.id = pc.library_id
      WHERE p.account_id = 3) AS d
    GROUP BY d.library_id
    

    DISTINCT(pc.library_id)を使用します あなたの例では、DISTINCTが括弧内の列にのみ適用されるかのように。これはよくある誤解です。 DISTINCTは、選択リストのすべての列に適用されます。 DISTINCTは関数ではありません。これはクエリ修飾子です。




    1. SQL Server DataTypesと同等のC#

    2. MySQLテーブルでNULLを使用する場合

    3. Oracleの日付の減算-数値または間隔のデータ型?

    4. PostgreSQLとは何ですか?