MySQL取出N列里最大or最小的一个数据

如题,现在有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:

MySQL取出N列里最大or最小的一个数据_第1张图片

取出3列最大值后,再分组(group by)后的数据, 查询的结果外面还要套一层用于取出max对应的uid:

你可能感兴趣的:(mysql)