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,事实上我认为我在这一点上对英语很有创意:-)这与