MySQL使用group by时,默认展示的数据都是数据库的第一条,这时使用order by是无效的
要展示最新一条数据的某些字段,一般通过SUBSTRING_INDEX截取获得获取
如果是时间,ID这种递增类型的,则可以使用max
例如要从充值表最新一条数据的入库时间
//max跟SUBSTRING_INDEX都可以实现
$data=Db::name("recharge")
->field("max(createTime) as createTime,SUBSTRING_INDEX(group_concat(createTime order by id desc),',',1) as createTime2")
->limit(10)
->group("playerId")
->select();
//SQL: SELECT max(createTime) as createTime,SUBSTRING_INDEX(group_concat(createTime order by id desc),',',1) as createTime2 FROM `recharge` GROUP BY `playerId` LIMIT 10
//createTime 跟createTime2 都是最新的一条数据的创建时间
例如要获取充值表最新一条数据的的充值金额,这次就只能用SUBSTRING_INDEX了
$data=Db::name("recharge")
->field("SUBSTRING_INDEX(group_concat(cost order by id desc),',',1) a