3

ab、およびcが通常同じである行を含むテーブルがあります。それぞれの一意のレコードを取得するクエリがあります。返された個別のレコードごとに重複レコードの数を取得しようとしています。

SELECT DISTINCT
     a,
     b,
     c,
     COUNT(id) as counted
FROM 
     table

COUNThere は、すべてのレコードの数を返します。私が探していたのは、一意のレコードと同一のレコードの数です。

4

3 に答える 3

3
SELECT DISTINCT
     a,
     b,
     c,
     (
          SELECT 
              COUNT(id) 
          FROM 
              table_name t1
          WHERE 
              t2.a = t1.a
     ) AS counted
FROM 
     table_name t2

上記のサブクエリは、インラインサブクエリと呼ばれます。where句t1とt2は、クエリによって異なるテーブル(DBでは単一のテーブル)として扱われます。したがって、同等性をチェックしてからカウントします。列を区別するため、すべてのプレイはそれだけで行われます。飛行機に乗れるといいのですが。

于 2013-03-08T10:51:20.063 に答える
3
 SELECT a,b,c,COUNT(*) FROM table GROUP BY a,b,c
于 2013-03-08T10:46:04.393 に答える
2

ああ、質問を書いているときにこれを複製から見つけました-私が得た回答とは十分に異なっていたので、結果を共有すると思いました。

クエリの不明確なレコードを取得するには、サブクエリを使用する必要があります。次に、サブクエリの WHERE 句で最初のクエリの結果を使用できます。

SELECT DISTINCT
     a,
     b,
     c,
     (
          SELECT 
              COUNT(id) 
          FROM 
              table_name t1
          WHERE 
              t2.a = t1.a
     ) AS counted
FROM 
     table_name t2

これは機能します。私の理解にギャップがある場合はお知らせください。

この回答の助けを借りて: https://stackoverflow.com/a/14110336/1270996

于 2013-03-08T10:42:35.060 に答える