[英]mysql get highest value with column name
我有一個名為myTable
的表,如下所示:
Name type1 type2 type3
----------------------------------------
John 3 6 9
Craig 5 2 24
我想獲得“John”最高的列 - 即列名和數量。
我想不出一個解決方案來處理它,任何指針?
使用下面的查詢使用名稱查找最高值列:
SELECT Name, @highest_val:= GREATEST(type1, type2, type3) AS highest_col_value,
CASE @highest_val WHEN type1 THEN 'type1'
WHEN type2 THEN 'type2'
WHEN type3 THEN 'type3'
END AS highest_value_column_name
FROM myTable
WHERE Name = 'John';
如果要檢索所有記錄,請使用以下查詢:
SELECT Name, @highest_val:= GREATEST(type1, type2, type3) AS highest_col_value,
CASE @highest_val WHEN type1 THEN 'type1'
WHEN type2 THEN 'type2'
WHEN type3 THEN 'type3'
END AS highest_value_column_name
FROM myTable;
這里GREATEST()
MySql 函數找到給定列的highest_col_value
作為highest_col_value
, CASE
將與每個列匹配以查找列名作為highest_value_column_name
。
沒有函數可以根據某些條件返回列名,但您可以使用 IF 函數。 要從列表中獲取最大值,請使用 GREATEST 函數。
SELECT
`Name`,
IF(`type1` > `type2` AND `type1` > `type3`,'type1',
IF(`type2` > `type1` AND `type2` > `type3`,'type2',
IF(`type3` > `type1` AND `type3` > `type2`,'type3','N/A'
)
)
) as `maxColName`,
GREATEST(`type1`,`type2`,`type3`) as `maxValue`
FROM `myTaable`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.