Jslfl【软件开发技术笔记】

mysql分组后取最近时间的行数据

经常在主从表(一对多)关联查询时取主表对应子表里的最近更新(一般时间)的数据,子表中数据可以如下方式查询,结果集用于与主表关联时的子查询,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 取用用户最新的日志
SELECT * FROM
    (SELECT * FROM tb_userlog ORDER BY user_id,log_date DESC) tborder
GROUP BY user_id

-- 与主表整合查询
SELECT tbu.*,tblog.*
FROM tb_user tbu
LEFT JOIN (
    SELECT * FROM
       (SELECT * FROM tb_userlog ORDER BY user_id,log_date DESC) tborder
    GROUP BY user_id
) tblog ON tblog.user_id=tbu.id

Comments are currently closed.