a
、b
、およびc
が通常同じである行を含むテーブルがあります。それぞれの一意のレコードを取得するクエリがあります。返された個別のレコードごとに重複レコードの数を取得しようとしています。
SELECT DISTINCT
a,
b,
c,
COUNT(id) as counted
FROM
table
COUNT
here は、すべてのレコードの数を返します。私が探していたのは、一意のレコードと同一のレコードの数です。
a
、b
、およびc
が通常同じである行を含むテーブルがあります。それぞれの一意のレコードを取得するクエリがあります。返された個別のレコードごとに重複レコードの数を取得しようとしています。
SELECT DISTINCT
a,
b,
c,
COUNT(id) as counted
FROM
table
COUNT
here は、すべてのレコードの数を返します。私が探していたのは、一意のレコードと同一のレコードの数です。
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では単一のテーブル)として扱われます。したがって、同等性をチェックしてからカウントします。列を区別するため、すべてのプレイはそれだけで行われます。飛行機に乗れるといいのですが。
SELECT a,b,c,COUNT(*) FROM table GROUP BY a,b,c
ああ、質問を書いているときにこれを複製から見つけました-私が得た回答とは十分に異なっていたので、結果を共有すると思いました。
クエリの不明確なレコードを取得するには、サブクエリを使用する必要があります。次に、サブクエリの 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