mysql5.7分组后没有取第一条的问题

select * from activist_audit where union_id=42 order by id desc

在这里插入图片描述

select * from (select * from activist_audit where union_id=42 order by id desc) ss
        group by activist_id

按理说这里group_by之后应该是 比如18 和17的去除掉17但是最终查出来是在这里插入图片描述

select * from (select DISTINCT * from activist_audit where union_id=42 order by add_time desc) ss
        group by activist_id

语句中加个distinct就好了在这里插入图片描述
究其原因应该是和mysql5.7添加的derived_merge 有关系

可以通过在子查询中使用任何阻止合并的构造来禁用合并,尽管这些构造对实现的影响并不明确。 防止合并的构造对于派生表和视图引用是相同的:
   1.聚合函数( SUM() , MIN() , MAX() , COUNT()等)
   2.DISTINCT
   3.GROUP BY
   4.HAVING
   5.LIMIT
   6.UNION或UNION ALL
   7.选择列表中的子查询
   8.分配给用户变量
   9.仅引用文字值(在这种情况下,没有基础表)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值