[英]Insert inside of a case statement
我有一個數據表,在該表中,我已經決定要更改保存和提取數據的方式。 就我而言,這是一個糟糕的設計,現在我需要修復它,而無需手動檢查每一行。 我想將主鍵從ItemID和VendorID更改為ItemID和Function。 如果兩個功能的供應商ID相同,我希望為每個功能+ ID單獨記錄,而不是組合記錄。 我將消除對other_functions列的使用。
基本上我的桌子看起來像這樣:
ItemID(PK)| VendorID(PK) | Function | other_functions
_______________________________________________________
1 | 23 | cooking |
1 | 36 | cleaning |
2 | 45 | cooking | cleaning
更新PK后,如何瀏覽表格,並為other_functions ='cleaning'的每條記錄插入新的一行,使其看起來像這樣:
ItemID(PK)| VendorID | Function(PK)
______________________________________
1 | 23 | cooking
1 | 36 | cleaning
2 | 45 | cooking
2 | 45 | cleaning
我正在使用PostgreSQL。 看來這應該是一個簡單的解決方案,但找不到我要找的答案。 可以僅使用insert + case語句來完成此操作嗎?
可以僅使用insert + case語句來完成此操作嗎?
CASE
會將值設置為條件-在您的情況下,您希望將插入本身設置為條件。 更好的方法是插入具有other_functions
值的記錄:
INSERT INTO {table}
(ItemID, VendorId, Function)
(
SELECT ItemID, VendorId, other_functions
FROM {table}
WHERE other_functions IS NOT NULL
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.