将一个表从一个表插入另一个表

时间:2018-02-03 23:37:31

标签: sql sql-server

我正在使用MS SQL Server Express 2017。

我有一个OrderDetails表。

OrderDetailID   OrderID ProductID   Quantity    Category
1               1       1           5           Local
2               1       3           2           Remote
3               1       2           5           Store
4               2       1           3           Local
5               2       2           5           Remote
6               2       3           2           Remote

我想使用现有的OrderID列表插入一个新的订单明细,其中包含“不可用”类别。我拥有的OrderID列表位于临时表中,其中OrderID的Int值已经在OrderDetails表中。

例如:如果在我的订单ID的临时表中我有1和2(orderID 1和2),我想在OrderDetails表中插入另一个OrderID 1和OrderID 2我想要的价值观,例如“不可用”的类别。 (Category的列数据类型为varchar(50),但我希望Insert语句使用我临时表中的相同OrderID值和我想要添加的现有OrderID。

我的临时表(_tmpOrderIDs):

OrderID
1
2

到目前为止,我有这样的陈述:

INSERT INTO OrderDetails
   (OrderID, ProductID, Quantity, Category) 
       VALUES ((SELECT OrderID FROM _tmpOrderIDs), 4, 1, 'Unavailable')

我得到的错误是'子查询返回的值超过1。',这是正确的,因为_tmpOrderIDs有多个OrderID。但是我希望_tmpOrderIDs中的所有orderID都可以使用我给它的自定义值插入到OrderDetails表中,同时保持它们各自的OrderID相同,因为它们是 - 在临时表中,_tmpOrderIDs。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

只需使用insert . . . select

INSERT INTO OrderDetails (OrderID, ProductID, Quantity, Category) 
    SELECT OrderID,  4, 1, 'Unavailable'
    FROM _tmpOrderIDs;

不需要VALUES关键字。