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,需要
原因:是由于默认的 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 ';