MySQL计算唯一行值的数量

21

TABLE quotation

的翻译是:

表格引用

id  clientid
1   25
2   25
3   25
4   25
5   26

如何查询在表格quotation中存在多少不同的客户端?我不希望重复的条目被计算超过一次。

我需要答案为2,在1行内,因为唯一的非重复条目是(25, 26)。


1
你的标题有误导性:你并没有计算重复行,而是计算唯一行数。如果计算重复行,将返回“4”,因为有4行具有相同的clientid值。 - Konerak
建议修改问题标题/文本,因为该问题目前是“mysql count duplicate entries”的谷歌搜索排名第一。 - Patrick M
6个回答

53

4
我找到了一种解决方法。
SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY
clientid) t1

3

如果您想计算唯一条目的总数,则会在列计数中返回一个数字。

SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY clientid having count(*) > 1) t1

如果您想计算具有重复行的条目总数,则使用以下mysql。
SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY clientid having count(*) >= 2) t1

2

我在一个MySQL 5.x数据库上尝试了以下操作。

id是一个整数,clientid也是一个整数。我添加了两行数据:

id  clientid
1   25
2   25

这个SQL查询将会输出恰好有两个元素的行:

select * from test1 group by clientid having count(*) = 2;

如果您需要2个或更多元素,请将上面例子中的= 2替换为>= 2
select * from test1 group by clientid having count(*) >= 2;

0
SELECT clientid, COUNT(clientid) FROM quotation 
GROUP BY clientid

1
这并不会得到客户的总计数,例如:"select count(distinct clientid) from quotation" - Ganesh Krishnan

0
我们可以通过以下方式实现这一点:
SELECT  COUNT(DISTINCT clientid) as Unique_Client FROM quotation;

根据要求,结果输出为2,因为唯一客户端ID为25和26。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接