MySQL 5.7查询时新增列标记同cp_parent_id分组下cp_version是否为最大值
MySQL 5.7 实现方案
你可以根据数据量选择以下两种兼容MySQL 5.7的实现方式,两种方案都可以得到你期望的输出结果:
方案1:子查询判断(小数据量场景,写法简单)
将以下SQL中的your_table_name替换为你实际的表名即可:
SELECT t1.cp_id, t1.cp_name, t1.cp_version, t1.cp_parent_id, IF(t1.cp_version = (SELECT MAX(cp_version) FROM your_table_name t2 WHERE t2.cp_parent_id = t1.cp_parent_id), 1, 0) AS max_version FROM your_table_name t1;
方案2:分组关联(大数据量场景,性能更优)
先分组计算每个cp_parent_id对应的最大版本号,再和原表关联判断:
SELECT t1.cp_id, t1.cp_name, t1.cp_version, t1.cp_parent_id, IF(t1.cp_version = t3.max_ver, 1, 0) AS max_version FROM your_table_name t1 LEFT JOIN ( SELECT cp_parent_id, MAX(cp_version) AS max_ver FROM your_table_name GROUP BY cp_parent_id ) t3 ON t1.cp_parent_id = t3.cp_parent_id;
内容的提问来源于stack exchange,提问作者Amit Rathod
相关产品推荐
相关产品推荐

