需求描述:
在 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) 是要求得在...v12 = IF(v1 > v2, v1, v2)
v_max = IF(v12 > v3, v12, v3)
如果 chaos 再增加两个数值列 v4、v5,要同时比较这五个字段的值,嵌套的 IF...那么,有没有比较简单且通用的实现呢?
有。先使用 UNION ALL 把每个字段的值合并在一起,再根据 id 分组求得最大值。...使用 CONCAT_WS() 函数将 v1、v2、v3 的值组合成使用逗号分割的字符串;
在递归语句使用 SUBSTRING_INDEX() 根据逗号分解字符串的每个数值;
根据 id 分组求得最大值。