找文章 / 找答案
精选问答 更多内容

[数据处理] sql语句

小白福在加油玄铁三 显示全部楼层 发表于 2024-7-2 15:14:23 |阅读模式 打印 上一主题 下一主题
1
未解决

【数据处理】 sql语句

1715 10
mysql中distinct去重是先去重然后执行下面语句还是后去重
回复

使用道具 举报

精彩评论10

yhdata_lyaa 显示全部楼层 发表于 2024-7-2 15:37:45
什么,数据库的问题吗
回复

使用道具 举报

小白福在加油玄铁三 显示全部楼层 发表于 2024-7-2 15:48:06
yhdata_lyaa 发表于 2024-7-2 15:37
什么,数据库的问题吗

写sql语句的时候
回复

使用道具 举报

小白福在加油玄铁三 显示全部楼层 发表于 2024-7-2 15:51:13
yhdata_lyaa 发表于 2024-7-2 15:37
什么,数据库的问题吗

例如select distinct(distinct task_id),task_num from Task order by task_num asc;,这个先去重在降序还是先降序在去重
回复

使用道具 举报

阿姆斯特朗炮铂金三 显示全部楼层 发表于 2024-7-2 16:07:57
理论上先执行select 后面的distinct,然后将查询出来的结果通过order by再排序
回复

使用道具 举报

yanieye 显示全部楼层 发表于 2024-7-2 19:46:48
MySQL首先执行 DISTINCT 去重,然后根据 ORDER BY 子句对去重后的结果进行排序。确保所有在 ORDER BY 中提及的列也在 SELECT DISTINCT 中被选中,以避免潜在的错误。
回复

使用道具 举报

yhdata_TFDpK8ac青铜四 显示全部楼层 发表于 2024-7-3 11:09:47
小白福在加油 发表于 2024-7-2 15:51
例如select distinct(distinct task_id),task_num from Task order by task_num asc;,这个先去重在降序还 ...

我觉得select distinct (distinct task_id)这样的写法有语法问题。参考mysql文档distinct优化器,distinct和group by在优化器内部处理时相互转换,所以建议distinct可以用group by改写。group by>order by
例如:
  1. select maxid
  2. from (
  3.         select max(id) maxid, ORG_CODE
  4.         from plf_aos_auth_user
  5.         group by ORG_CODE
  6. )t
  7. order by maxid desc
复制代码
百度搜索MYSQL分组取前N条记录,思路大概是先算一个分组的排名字段,再筛选排名字段
服务器对SQL解析,预处理,再由优化器生成执行计划。通过了解执行计划看group by limit order by等顺序而不简单是括号优先级。比如索引对group by的影响(临时表 和 文件排序两种策略)。这其实非常复杂,我完全不了解,如果有兴趣可看相关文档和书籍。

望采纳。
回复

使用道具 举报

小白福在加油玄铁三 显示全部楼层 发表于 2024-7-3 14:00:00
统一回复一下,谢谢大家
回复

使用道具 举报

小白福在加油玄铁三 显示全部楼层 发表于 2024-7-3 14:03:49
yhdata_TFDpK8ac 发表于 2024-7-3 11:09
我觉得select distinct (distinct task_id)这样的写法有语法问题。参考mysql文档distinct优化器,distinc ...

了解过group by这个分组函数是不是得和聚合函数一起使用,要不就会报错
回复

使用道具 举报

哈莉·奎茵白银三 显示全部楼层 发表于 2024-7-3 14:50:00
本帖最后由 yhdata_roWRDCAN 于 2024-7-3 14:59 编辑
小白福在加油 发表于 2024-7-3 14:03
了解过group by这个分组函数是不是得和聚合函数一起使用,要不就会报错

也不完全,看你需求。就像你上面的sql语句,其实可以同等修改为:
select
    task_num,
    count(task_id) task_id_cnt
from (
   select
       task_num,
       task_id
   from Task
   group by
       task_num,
       task_id
)t
order by
    task_num
在大数据量情况下,gourp  by去重性能比 distinct 好。
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部