我需要计算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 值(在任何其他行中没有重复值),COUNT(1) 将恰好是 1。
此结果与其他答案中的查询有很大不同,后者会计算标题的不同值的数量。这确实是两个不同的问题。
考虑:
title
------
apple
banana
banana
orange
orange
orange
标题值的不同数量是三,但标题“没有重复值”的行数是一。
尝试这个
SELECT COUNT(*) FROM (SELECT * FROM table GROUP BY title)
或者,您可以使用DISTINCT
关键字。