このようなテーブルがあります
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 を使用しました)。
どうすればこれを行うことができますか?
ありがとう!
このようなテーブルがあります
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 を使用しました)。
どうすればこれを行うことができますか?
ありがとう!
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