作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在过去,我有一个包含这样一个表的数据库:
ProductID | ProductName | InStockWareHouse1 | InstockWareHouse2
---------------------------------------------------------------
1 Name1 5 10
2 Name2 10 20
但是现在,为了让普通用户能够自己创建更多的 WareHouse,我必须更改为 details-table。像这样:
产品表:
ProductID | ProductName
-----------------------
1 Name1
2 Name2
3 Name3
仓库表:
WareHouseID | WareHouseName
---------------------------
1 WareHouse1
2 WareHouse2
3 WareHouse3
WareHouseDetails 表:
ProductID | WareHouseID | InStock
---------------------------------
1 2 5
2 2 10
2 3 10
将数据从旧的 Product 表移动到新的 Product 表并不难,但是我花了一个小时仍然没有想出将数据从旧表移动到新表的解决方案。有什么建议吗?我可以接受解决方案是使用查询还是自己编写一个程序来读取所有数据并写回服务器,只要我不必手动重新输入所有数据即可。
最佳答案
假设您的产品 ID 和仓库是自动递增的整数,我会简单地编写一个小脚本来执行此操作,首先将您的产品复制到产品表,然后手动创建您的仓库。最后从旧的产品 ID 表中复制产品。注意我们需要使用 SET IDENTITY_INSERT <table> ON\OFF
以便写入自动递增键。
类似于(注意我使用 OldProducts 作为旧产品表的名称)
SET IDENTITY_INSERT Product ON
INSERT INTO Product (ProdcutId, ProductName) SELECT ProductId, ProductName FROM OldProducts
SET IDENTITY_INSERT Product OFF
SET IDENTITY_INSERT Warehouse ON
INSERT INTO Warehouse (WarehouseId, WarehouseName) VALUES (1, 'Warehouse1')
INSERT INTO Warehouse (WarehouseId, WarehouseName) VALUES (2, 'Warehouse2')
SET IDENTITY_INSERT Warehouse OFF
INSERT INTO WarehouseDetails (ProductId, WareHouseId, InStock) SELECT ProductId, 1, InStockWarehouse1 FROM OldProducts
INSERT INTO WarehouseDetails (ProductId, WareHouseId, InStock) SELECT ProductId, 2, InStockWarehouse2 FROM OldProducts
GO
关于mysql - canhan数据库: How to move data from non details-table to details-table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505017/
我是一名优秀的程序员,十分优秀!