首页 > 解决方案 > 使用 select 语句将多行插入到 SQL 表中?

问题描述

我有一个表,我需要使用来自其他两个表的数据插入多行我正在尝试以下


SET IDENTITY_INSERT [dbo].[JobTypeUplifts] ON

INSERT INTO [dbo].[JobTypeUplifts]
(
            [ID]
           ,[JobTypeID]
           ,[CustomerID]
           ,[MarkUpPerc]
           ,[PriceSQM]
           ,[Ref])
     VALUES
           (50
           ,(select ID from JobType where code like '%-d')
           ,(select ID from Customers)
           ,15
           ,0
           ,''

                     )
GO    

但我得到了错误:

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

我有多种工作类型和多个客户。

我该如何克服这个问题?

标签: sql-server

解决方案


而不是VALUES使用SELECT

INSERT INTO [dbo].[JobTypeUplifts]
(
            [ID]
           ,[JobTypeID]
           ,[CustomerID]
           ,[MarkUpPerc]
           ,[PriceSQM]
           ,[Ref])
SELECT
           50
           ,j.ID
           ,c.ID
           ,15
           ,0
           ,''
FROM JobType j CROSS JOIN Customers c
WHERE j.code like '%-d'

这将返回IDJobType和s 中的所有组合Customers


推荐阅读