Mysql 计算唯一值的数目

Mysql 计算唯一值的数目,mysql,Mysql,如果我有三列: orderNumber, name, email 我想数一数表中有多少独特的电子邮件,我该怎么做 这样的陈述: SELECT count(email) FROM orders 给我总数 我尝试从订单中选择不同的计数(电子邮件) 但这似乎并没有给我预期的数字 SELECT count(DISTINCT(email)) FROM orders 它与你的帖子不同,因为它会在计算之前过滤掉重复的内容 SELECT count( DISTINCT(email) ) FROM ord

如果我有三列:

orderNumber, name, email
我想数一数表中有多少独特的电子邮件,我该怎么做

这样的陈述:

SELECT count(email) FROM orders
给我总数

我尝试从订单中选择不同的计数(电子邮件)

但这似乎并没有给我预期的数字

SELECT  count(DISTINCT(email)) FROM orders
它与你的帖子不同,因为它会在计算之前过滤掉重复的内容

SELECT count( DISTINCT(email) ) FROM orders

Distinct提供唯一的电子邮件ID,然后简单地计算它们。

要获得最佳性能,您应该使用:

SELECT 
sub.email, 
count(1) as 'count_unique' 
FROM 
(SELECT email FROM orders GROUP by email) sub

接受的解决方案不适用于我-它会为表中每个唯一的电子邮件地址返回一个“1”

这就是我必须做的,以获得我需要的信息:

select email, count(email) AS total from sysAccessLog group by email order by total desc

返回电子邮件地址和出现次数的列表。

尽管我非常感谢您的回答,您能解释一下为什么这与我自己的启发有所不同吗?这样,您计算的是不同的电子邮件,而不是不同的电子邮件count@thatidiotguy,通过执行“从订单中选择不同的计数(电子邮件)”您首先计算所有电子邮件(包括重复邮件),然后使用distinct进行过滤。因此,您将收到电子邮件的总数,而不是不同电子邮件的总数。@Bartdude感谢您的澄清。这是有道理的。@AlpeshGediya:我是Netither,事实上我认为我在这一点上对英语很有创意:-)这与