簡體   English   中英

插入案例陳述中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM