需求描述:
在 chaos(id,v1,v2,v3) 表中获取每个 id 对应的 v1、v2、v3 字段的最大值,v1、v2、v3 同为数值类型。..., v2) > v3,
IF(v1 > v2, v1, v2),
v3
) AS v_max
FROM
chaos
表达式 IF(v1 > v2, v1, v2) 是要求得在...v1、v2 之间较大的那个值,再用求得的值和 v3 作比较。...那么,有没有比较简单且通用的实现呢?
有。先使用 UNION ALL 把每个字段的值合并在一起,再根据 id 分组求得最大值。...使用 CONCAT_WS() 函数将 v1、v2、v3 的值组合成使用逗号分割的字符串;
在递归语句使用 SUBSTRING_INDEX() 根据逗号分解字符串的每个数值;
根据 id 分组求得最大值。