我有一个名为myTable
的表,如下所示:
Name type1 type2 type3
----------------------------------------
John 3 6 9
Craig 5 2 24
我想获取'John'最高的那一列,即列名和金额。
我想不出解决任何指针的解决方案?
答案 0 :(得分:1)
在下面的查询中使用名称查找最高值列-
contact
如果要检索所有记录,请使用以下查询。
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 = 'Jhon';
在此处GREATEST()MySql函数找到给定列的最大值为 highest_col_value ,大小写将与各列匹配以找到列名为 highest_value_column_name 。
答案 1 :(得分:0)
没有函数可以根据某些条件返回列名,但是您可以使用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`