MySQL分组去重,取每个区块链地址最新一条交易记录:

select * from (select qkl_account_address,create_time from `qklmessage` order by create_time desc) as a group by qkl_account_address order by create_time desc

报错:1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated……
原因:是由于默认的 MySQL 配置中 sql_mode 配置了only_full_group,需要GROUP BY中包含所有在SELECT中出现的字段。

only_full_group_by说明:
only_full_group_by :使用这个就是使用和oracle一样的group 规则,select的列都要在group中或者本身是聚合列(SUM,AVG,MAX,MIN) 才行。其实这个配置目前个人感觉和distinct差不多的,所以去掉就好。

使用 SQL 语句可以查询这个配置:

select @@sql_mode;

看到网上教程说要修改MySQL的配置文件,还要重启啥的,巨麻烦!简单的方法,直接执行SQL语句:

set SESSION sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ';
最后修改:2022 年 06 月 17 日
给我一点小钱钱也很高兴啦!o(* ̄▽ ̄*)ブ