最近学的有点晕,本身就涉及group by和distinct,如何把distinct去掉,优化呢:
select num,
date,
count(distinct(id))
 from test1 
group by num , date另外上面这个用法,是不是和如下脚本的逻辑是一样的呢(去掉distinct)?如果一样的话就不用改了(我测试了感觉像一样的)。。
select num,
date,
count((id))
 from test1 
group by num , date

解决方案 »

  1.   

    count(id) 跟 count(1) 差不多,就是对group进行计数,
    每组 num , date 有几行记录而count(distinct(id)) 是不一样的,是对每组group里有几个不同的id,举例,记录如下:
    id num 
    1    1
    1    2
    2     3
    2    3
    3    3那么 select num,count(id) from a group by num返回
    1 1
    2 1
    3 3而 select num,count(distinct(id)) from a group by num 返回
    1 1
    2 1
    3 2
      

  2.   

    id有重复的,测试结果上下两个还是一样。
    我测试10万条的数据,两条sql得出结论都一样啊
      

  3.   

    id有重复的,测试结果上下两个还是一样。
    我测试10万条的数据,两条sql得出结论都一样啊看我1楼的回复,把那些数据导入你的数据库,执行看看就知道了,
    不验证也敢回复说一样