假设我有两张桌子:orderinfo
和customerinfo
它们看起来像这样:
订单信息:
OrderID
CustomerID
OrderCustomerName
OrderCustomerAddress
客户信息:
CustomerID
CustomerName
CustomerAddress
OrderID
和CustomerID
都是唯一的。当要创建订单时,我需要在此时将信息从customer info复制到orderinfo,因为客户稍后可能会更改他的信息。我希望我可以使用
CustomerID
来实现这一点。我应该如何编写子查询?谢谢。 最佳答案
插入新订单时,可以使用以下简单的查询语法获取客户数据的“快照”:
INSERT INTO orderinfo (CustomerID, OrderCustomerName, OrderCustomerAddress, status)
SELECT CustomerID, CustomerName, CustomerAddress, 'P'
FROM customerinfo
WHERE CustomerID = <customerid here>
这将插入一个新订单,其中包含下订单时的客户信息。
即使客户在
customerinfo
表中更新了自己的信息,这些信息也将保持其插入方式不变,因为除了CustomerID
更改之外,没有任何级联效应(它不应该这样做,即使它确实更改了,也不会更改“快照”数据)。关于mysql - 跨具有不同列名称的表的SQL子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11387351/