SQL查询优化求助:如何针对指定p_id仅获取max(v.id)
针对指定p_id获取最大v.id的SQL实现
当然可以帮你搞定这个需求!要针对指定的p_id只查询最大的v.id(以及关联的用户信息),你提到的ORDER BY v.id DESC LIMIT 1是个非常直观的方案,完整的SQL语句如下:
SELECT v.id, u.firstname as author_name, u.lastname as author_surname FROM ps_versioning as v INNER JOIN u_users as u ON u.user_id = v.user_id WHERE v.patient_id = p_id ORDER BY v.id DESC LIMIT 1;
另外补充一种常用的实现思路——用聚合函数MAX()结合子查询,适合需要更严谨关联逻辑的场景:
SELECT v.id, u.firstname as author_name, u.lastname as author_surname FROM ps_versioning as v INNER JOIN u_users as u ON u.user_id = v.user_id WHERE v.patient_id = p_id AND v.id = (SELECT MAX(id) FROM ps_versioning WHERE patient_id = p_id);
两种方式各有特点:
ORDER BY + LIMIT写法简洁直观,适合单条最大记录的查询场景,数据量不大时性能表现优秀;- 子查询+
MAX()的方式扩展性更强,比如需要批量查询多个患者的最新版本时更灵活,数据量较大时也能避免排序带来的额外开销。
内容的提问来源于stack exchange,提问作者zinon
相关产品推荐
相关产品推荐

