-1

このようなテーブルがあります

id | a | b | c | status
---+---+---+---+--------
1  | 3 |12 |6  |   b
2  | 5 |8  |56 |   c
3  | 99|7  |23 |   a

どの列が最大値 (1、2、または 3) であるかを検出し、その行の最大値の「ステータス」を記録したいと思います (例として a、b、c を使用しました)。

どうすればこれを行うことができますか?

ありがとう!

4

1 に答える 1

7
SELECT *, 
    CASE GREATEST(a,b,c)
        WHEN a THEN 'a'
        WHEN b THEN 'b'
        WHEN c THEN 'c'
    END AS status
FROM yourtable

オンラインで動作することを確認してください: sqlfiddle

UPDATE声明として書き直されました:

UPDATE yourtable
SET status =
    CASE GREATEST(a,b,c)
        WHEN a THEN 'a'
        WHEN b THEN 'b'
        WHEN c THEN 'c'
    END
于 2012-07-01T07:42:37.753 に答える