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 值(在任何其他行中没有重复值),COUNT(1) 将恰好是 1。

此结果与其他答案中的查询有很大不同,后者会计算标题的不同值的数量。这确实是两个不同的问题。

考虑:

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

标题值的不同数量是三,但标题“没有重复值”的行数是一。

于 2013-07-15T15:37:25.667 回答
1

尝试这个

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

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

于 2013-07-15T15:24:58.323 回答