我有一個名為 table1 的表,其中有一列名為 col1,其取值范圍為 1-9。
table1
col1
1
9
7
2
4
6
1
9
3
5
現在我想添加另一列,將 col1 中的值映射到地圖中給定的另一個值。1 -> A, 2 -> B, 3 -> C, 4 -> D, 5 -> E, 6 -> F, 7 -> G, 8 -> H, 9 -> I
我希望結果如下所示。
col1 col2
1 A
9 I
7 G
2 B
4 D
6 F
1 A
9 I
3 C
5 E
我的方法是使用映射創建一個新表,然后進行內部連接。
CREATE TABLE map (
col1 int,
col2 varchar
);
INSERT INTO map
(col1, col2)
VALUES
(1,'A'),(2,'B'),(3,'C'),(4,'D'),(5,'E'),(6,'F'),(7,'G'),(8,'H'),(9,'I');
SELECT table1.col1, map.col2
FROM table1 INNER JOIN map ON table1.col1 = map.col1
這是有效的方法嗎,還有比這更好的方法嗎?
uj5u.com熱心網友回復:
用例陳述:
Update t
Update new_column =
Case
WHEN col1 = 1 THEN 'A'
WHEN col1 = 2 THEN 'B'
WHEN col1 = 3 THEN 'C'
WHEN col1 = 4 THEN 'D'
WHEN col1 = 5 THEN 'E'
WHEN col1 = 6 THEN 'F'
WHEN col1 = 7 THEN 'G'
WHEN col1 = 8 THEN 'H'
WHEN col1 = 9 THEN 'I'
END
FROM table1 t
uj5u.com熱心網友回復:
盡管創建映射表可能是一個好主意,但假設您需要使用查詢填充映射表。thencase
陳述句很有用。
CASE col1
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
WHEN 3 THEN 'C'
WHEN 4 THEN 'D'
-- And so on
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/508212.html
上一篇:Hibernate不保存物體