我有一个数据表,我决定要改变保存和提取数据的方式。这对我来说是一个糟糕的设计,现在我需要修复它而不需要手动遍历每一行。我想将主键从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语句来完成吗?
答案 0 :(得分:0)
只需插入+ case语句就可以完成吗?
CASE
会使值成为条件 - 在您的情况下,您希望使插入本身成为条件。更好的方法是插入具有other_functions
值的记录:
INSERT INTO {table}
(ItemID, VendorId, Function)
(
SELECT ItemID, VendorId, other_functions
FROM {table}
WHERE other_functions IS NOT NULL
)