【sql问题】distinct 改成group by 用法

ck59505 2018-03-30 09:58:45
最近学的有点晕,本身就涉及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
...全文
692 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2018-03-31
  • 打赏
  • 举报
回复
id主键吧。如果相同结果就证明没有重复的
游北亮 2018-03-31
  • 打赏
  • 举报
回复
引用 3 楼 ck59505 的回复:
[quote=引用 2 楼 rucypli 的回复:] id不重复的话 效果一样
id有重复的,测试结果上下两个还是一样。 我测试10万条的数据,两条sql得出结论都一样啊[/quote] 看我1楼的回复,把那些数据导入你的数据库,执行看看就知道了, 不验证也敢回复说一样
游北亮 2018-03-30
  • 打赏
  • 举报
回复
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
ck59505 2018-03-30
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
id不重复的话 效果一样
id有重复的,测试结果上下两个还是一样。 我测试10万条的数据,两条sql得出结论都一样啊
rucypli 2018-03-30
  • 打赏
  • 举报
回复
id不重复的话 效果一样

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧