繁体   English   中英

插入到选择从另一个表中获取ID

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

这是一个表,可以进入包含PlantsCustomersProducts表的新数据库。 我已经解决了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表”中进行选择,以生成ProductIDCustomerID值。

您可以使用嵌套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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM