具有子查询优化的MySQL Distinct查询

时间:2013-06-28 18:59:43

标签: mysql

我试图在2006年8月26日的“Galt Barber”中提出有关明显优化的建议: http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html

我的查询如下:

 SELECT COUNT( `pUserDirectLabor`.`pDate` ) as `daysWorked` 
 FROM   ( SELECT  DISTINCT `user_direct_labor`.`date`  as `pDate`  
       FROM user_direct_labor 
       GROUP BY user_direct_labor.`date`)  
 AS pUserDirectLabor,  user_direct_labor   

这里只查询了一张表。该表为user_direct_labor,其中date列为日期时间类型。该表有12行。 2013-06-28 00:00:00格式有6个独特日期。

如果我自己只运行子查询,我会从数据库中返回6行,并且具有预期的唯一日期。

当我添加count()时,结果变为54.我不确定54来自何处。我对子查询相当新手。

如果我将其更改为COUNT(1),它仍然会返回54.我不知道为什么要使用COUNT(1),但这就是这个人所说的。 How to express count(distinct) with subquery in MySQL?

任何人都可以给我任何指示吗?

1 个答案:

答案 0 :(得分:0)

你可以这么简单地做到这一点:

   SELECT  `date`  as `pDate`  , COUNT(*) as `daysWorked`
   FROM user_direct_labor 
   GROUP BY `date`