0

titleフィールドに一意の値が含まれるレコードの数を数える必要があります。

これらのレコードを次の方法で選択できます。

SELECT * FROM table GROUP BY title

しかし、私がそれらを数えようとしたとき。重複の数を取得します。行数ではありません。

SELECT COUNT(*) FROM table GROUP BY title

4

3 に答える 3

6

次のようなことを試すことができます:

SELECT COUNT(DISTINCT title) FROM table;
于 2013-07-15T15:24:56.733 に答える
2

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 です。

于 2013-07-15T15:37:25.667 に答える
1

これを試して

 SELECT COUNT(*) FROM (SELECT * FROM table GROUP BY title) 

DISTINCTまたは、キーワードを使用することもできます。

于 2013-07-15T15:24:58.323 に答える