![](/img/trans.png)
[英]Select ID from one table and insert in another table with while loop
[英]Insert Into Select Get ID From another Table
我有一个几年前建立的数据库,并将其放入RDB中。 我想要以下内容:
PlantName PlantNumber Customer ProductNumber Product
________________________________________________________
________________________________________________________
Loc A 1000 Joe's 123456 Pizza 1
________________________________________________________
Loc B 2000 Jerry's 654321 Pizza 2
这是一个表,可以进入包含Plants
, Customers
和Products
表的新数据库。 我已经解决了Customers
表:
CustomerID CustomerName
____________________________
____________________________
987 Joe's
____________________________
789 Jerry's
我希望Products
表看起来像这样
ProductID CustomerID ProductName
_______________________________________
_______________________________________
123456 987 Pizza 1
_______________________________________
654321 789 Pizza 2
所以我的问题是,如何创建INSERT
语句以从“ Customers
表中获取“ CustomerID
INSERT
”? 我需要从旧的“ Products
表”和新的“ Customers
表”中进行选择,以生成ProductID
和CustomerID
值。
您可以使用嵌套SELECT
语句使用常规INSERT
语法。 例如,请参见此链接: 插入...值(SELECT ... FROM ...)
INSERT INTO Products ( ProductID, CustomerID, ProductName )
SELECT 12345, CustomerID, 'Product name'
FROM Customers
WHERE CustomerName = 'name'
但是正如评论所暗示的那样,您可能想要创建第三个映射表来为您处理这些数据。 一个表严格地用于客户,一个表用于产品,第三个表用于购买/客户产品映射。
您可能还对数据库的标准格式感兴趣: https : //en.wikipedia.org/wiki/First_normal_form ,它可以帮助您以更简洁,更易于维护的方式设计表。
您可以使用SELECT INTO
语句。
SELECT A.ProductNumber as ProductID, B.CustomerID, A.Product as ProductName
INTO Products
FROM Plants as A
INNER JOIN Customers as B
ON B.CustomerName = A.Customer
缺点是,如果CustomerName不是唯一的并且引用了另一个人。 因此,好的设计是您的原始表具有CustomerId而不是CustomerName。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.