【实践】相同组获取第一条数据的几种SQL实现

本文分享了在数据库中获取相同组第一条数据的多种SQL实现方法,包括分组排序、利用聚合函数、窗口函数ROW_NUMBER()等,并针对MySQL和MariaDB的差异进行了详细说明。同时,强调了在不同数据库系统中实现此类操作需要注意的问题和性能考虑。
摘要由CSDN通过智能技术生成

【实战分享】相同组获取第一条数据的几种SQL实现

  • 分组排序后获取第一条数据
  • 分组加行号后获取第一条数据(当然获取前几条数据也是同理)
  1. 利用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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值