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.仅引用文字值(在这种情况下,没有基础表)