默认mysql group by 获得行数据是id最小,一般情况下需求是获取id最大的行数据,可以使用max(id) inner join 的方式获取goupby id 最大的行数据
例子:
select max(tt.id) as id from zdprogress as tt where tt.zid in (146,148,149) group by tt.zid ) as t1
inner join zdprogress as t2 on t1.id = t2.id
或者 使用子查询
SELECT * FROM (select distinct uid, id from device_user_log order By id desc) as t group by t.uid
分组查询 每组前三条
SELECT * FROM
device_user_log main
WHERE
(SELECT COUNT(1)
FROM device_user_log sub
WHERE
main.uid = sub.uid
AND main.id < sub.id
) < 1
mybatis foreach 标签的使用
tt.zid in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
insert into xxx(user_id, post_id) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.userId},#{item.postId})
</foreach>