我有一個簡單的表,我正在通過SELECT該表中的重復 ID 動態計算“級別值”,我想要做的是按最大級別值對行 ID 進行分組。
小提琴:https ://www.db-fiddle.com/f/2Pyfi2PMV8eaQbDt2uWQjc/2
我已經嘗試CASE在 Group and Order 中使用,但效果不佳。
我已經嘗試過使用MAX(),但我得到的是第二個值而不是第四個值的分數。我想要得到的是這樣的結果:
| id | score | level |
| -- | ------- | ----- |
| 1 | [] | 0 |
| 16 | [1,2,4] | 3 |
| 17 | [1] | 1 |
有沒有辦法對 Id 進行分組,但如果有重復的 Id 得到最高級別的 Id?
謝謝。
uj5u.com熱心網友回復:
您可以像這樣使用 group by:
select test.id , min(test.score) as score,
(CASE
WHEN JSON_LENGTH(min(test.score)) = 3 THEN 3
WHEN JSON_LENGTH(min(test.score)) = 2 THEN 2
WHEN JSON_LENGTH(min(test.score)) = 1 THEN 1
ELSE 0
END) as level
from test group by test.id
結果是:
|id | score | level |
|---|---------|-------|
|1 | [] | 0 |
|16 | [1,2,4] | 3 |
|17 | [1] | 1 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492046.html
