簡體   English   中英

mysql獲取列名的最大值

[英]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_valueCASE將與每個列匹配以查找列名作為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM