假設我有一個這樣的新表,其中還沒有值:
| 鑰匙 | uuid | 狗 | 貓 | 鹿 | 等等 |
|---|
我有一個這樣的填充表,其中包含我想要與新的空表相關的值:
| 鑰匙 | uuid | 格式 | 狀態 |
|---|---|---|---|
| 1 | uuid1 | 狗 | 毛茸茸 |
| 2 | uuid1 | 貓 | 蓬松的 |
| 3 | uuid2 | 狗 | 剃光的 |
| 4 | uuid3 | 鹿 | 光滑的 |
我想要做的是從表 2 中獲取每個“格式”并在表 1 中創建一個新列,其中表 2 中的“狀態”是表一中新“格式”列的值。假設上面的表格是我正在使用的,我希望表格看起來像這樣:
| 鑰匙 | uuid | 狗 | 貓 | 鹿 | 等等 |
|---|---|---|---|---|---|
| 1 | uuid1 | 毛茸茸 | 蓬松的 | 空值 | 其他價值 |
| 2 | uuid2 | 剃光的 | 空值 | 空值 | 其他價值 |
| 3 | uuid3 | 空值 | 空值 | 光滑的 | 其他價值 |
額外棘手的部分在表 2 中,uuid1 可以具有比 uuid2 更多或更少的“格式”值,反之亦然,繼續喜歡 50k uuid,因此我需要用 null 或 false 值填充其他列
這是可能的,還是我使用的資料太荒謬而無法實作?
uj5u.com熱心網友回復:
由于您已經創建了新表,這意味著您已經知道該列的可能值format。
在這種情況下,您可以使用條件聚合來填充表:
INSERT INTO table2 (uuid, dog, cat, deer)
SELECT uuid,
MAX(CASE WHEN format = 'dog' THEN status END),
MAX(CASE WHEN format = 'cat' THEN status END),
MAX(CASE WHEN format = 'deer' THEN status END)
FROM table1
GROUP BY uuid;
查看簡化的演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446878.html
