有多少独特的头衔?

时间:2013-07-15 15:23:09

标签: mysql

我需要计算title字段具有唯一值的记录数。

我可以通过以下方式选择这些记录:

SELECT * FROM table GROUP BY title

但是当我试图计算它们时。我得到重复的数量。不是行数。

SELECT COUNT(*) FROM table GROUP BY title

3 个答案:

答案 0 :(得分:6)

可以尝试这样的事情:

SELECT COUNT(DISTINCT title) FROM table;

答案 1 :(得分: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子句中包含聚合的谓词。对于仅出现在一行中的标题值(任何其他行中没有重复值),COUNT(1)将恰好为一行。

此结果与其他答案中的查询明显不同,后者会计算标题的不同值的数量。这些实际上是两个不同的问题。

考虑:

title
------
apple
banana
banana
orange
orange
orange

标题值的不同数量为3,但标题“无重复值”的行数为1。

答案 2 :(得分:1)

试试这个

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

或者,您可以使用DISTINCT关键字。