mysql获得最高的列名值

时间:2018-07-04 19:59:11

标签: mysql

我有一个名为myTable的表,如下所示:

Name    type1    type2    type3
----------------------------------------
John    3        6        9
Craig   5        2        24

我想获取'John'最高的那一列,即列名和金额。

我想不出解决任何指针的解决方案?

2 个答案:

答案 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`