我需要计算title
字段具有唯一值的记录数。
我可以通过以下方式选择这些记录:
SELECT * FROM table GROUP BY title
但是当我试图计算它们时。我得到重复的数量。不是行数。
SELECT COUNT(*) FROM table GROUP BY title
答案 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
关键字。