检测哪个列具有最大值

San*_*ago -1 mysql

我有一张这样的桌子

id | a | b | c | status
---+---+---+---+--------
1  | 3 |12 |6  |   b
2  | 5 |8  |56 |   c
3  | 99|7  |23 |   a
Run Code Online (Sandbox Code Playgroud)

我想检测哪个列具有最大值(1,2或3),然后记录该行最高值的"状态"(我使用a,b,c仅用于示例)

我怎么能这样做?

谢谢!

Mar*_*ers 7

SELECT *, 
    CASE GREATEST(a,b,c)
        WHEN a THEN 'a'
        WHEN b THEN 'b'
        WHEN c THEN 'c'
    END AS status
FROM yourtable
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:sqlfiddle

改写为UPDATE声明:

UPDATE yourtable
SET status =
    CASE GREATEST(a,b,c)
        WHEN a THEN 'a'
        WHEN b THEN 'b'
        WHEN c THEN 'c'
    END
Run Code Online (Sandbox Code Playgroud)