如题,现在有3列,都是数字类型,要取出这3列里最大或最小的的一个数字
-- N列取最小
SELECT
LEAST(temperature_a,temperature_b,temperature_c) min
FROM infrared_heat
-- N列取最大
SELECT
GREATEST(temperature_a,temperature_b,temperature_c) max
FROM infrared_heat
(注意:是3列! 不是3行! 3行直接用max() min()函数就行...)
实际应用, 取出3列中某个值最大的那一行数据?:
SELECT *
FROM infrared_heat a,
(
SELECT MAX(max) max,station_name,device_name,location
FROM
(
SELECT
GREATEST(temperature_a,temperature_b,temperature_c) max -- 取出3列最大值
,station_name,device_name,location
FROM infrared_heat
WHERE test_date >='2024-1-1' and test_date<'2024-1-31'
) temp
GROUP BY station_name,device_name,location
)b
WHERE a.test_date >='2024-1-1' and a.test_date<'2024-1-31'
and a.station_name=b.station_name and a.device_name=b.device_name and a.location=b.location
and GREATEST(a.temperature_a,a.temperature_b,a.temperature_c)=b.max -- 3列最大值
原始的数据,添加一个3列的最大值列max:
取出3列最大值后,再分组(group by)后的数据, 查询的结果外面还要套一层用于取出max对应的uid: