title
フィールドに一意の値が含まれるレコードの数を数える必要があります。
これらのレコードを次の方法で選択できます。
SELECT * FROM table GROUP BY title
しかし、私がそれらを数えようとしたとき。重複の数を取得します。行数ではありません。
SELECT COUNT(*) FROM table GROUP BY title
title
フィールドに一意の値が含まれるレコードの数を数える必要があります。
これらのレコードを次の方法で選択できます。
SELECT * FROM table GROUP BY title
しかし、私がそれらを数えようとしたとき。重複の数を取得します。行数ではありません。
SELECT COUNT(*) FROM table GROUP BY title
次のようなことを試すことができます:
SELECT COUNT(DISTINCT title) FROM table;
title
他の行に表示されない値を持つ行の数を取得するには、次のようにします。
SELECT COUNT(1) AS count_of_rows_without_duplicate_title
FROM (
SELECT `title`
FROM `table`
GROUP BY `title`
HAVING COUNT(1) = 1
)
OPが尋ねた質問は、「重複値のないレコードの数」を取得することでした。ここでの「トリック」は、集計の述語を HAVING 句に含めることです。title の値が 1 つの行にのみ発生する (他の行に重複する値がない) 場合、COUNT(1) は正確に 1 になります。
この結果は、タイトルの個別の値の数を取得する他の回答のクエリとは大きく異なります。これらは、実際には 2 つの異なる質問です。
検討:
title
------
apple
banana
banana
orange
orange
orange
タイトル値の個別の数は 3 ですが、タイトルの「値が重複していない」行の数は 1 です。
これを試して
SELECT COUNT(*) FROM (SELECT * FROM table GROUP BY title)
DISTINCT
または、キーワードを使用することもできます。