【实战分享】相同组获取第一条数据的几种SQL实现
- 分组排序后获取第一条数据
- 分组加行号后获取第一条数据(当然获取前几条数据也是同理)
- 利用GROUP BY后聚合函数,比如:MAX, MIN等
此种方式简单粗暴,存在一个隐藏问题,就是非分组列获取值不一定是同一行的数据,比如:这里的
workout_time
此种方式适用于MariaDB,如果想适用于MySQL需要修改ANY_VALUE(wr.workout_date)
,存在非分组列相同问题
SELECT
h.id AS 'hospital_id', h.name AS 'hospital_name', p.id AS 'patient_id', p.name AS 'patient_name',
ed.game_id, g.name AS 'game_name', MAX(ed.score) AS 'game_score', wr.workout_date AS 'workout_time'
FROM
t_p p,
t_w_r wr,
t_e_d ed,
t_h h,
t_g g
WHERE
p.name = 'kenny' AND
p.id = wr.patient_id
AND wr.id = ed.workout_id
AND p.hospital_id = h.