sql-server - 使用 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 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我有多种工作类型和多个客户。
我该如何克服这个问题?
解决方案
而不是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'
这将返回ID
表JobType
和s 中的所有组合Customers
。
推荐阅读
- ruby - 来自字符串的 Ruby Acronym Creator
- c++ - 指针或结构的向量?
- c# - 使用正则表达式验证密码
- javascript - 需要帮助在节点中转换具有负指数的大数
- ios - HTTP DELETE 在浏览器中有效,但在 Postman 或 IOS 应用中无效
- python - Flask 登录会话如何工作
- angular - 在模板变量中使用 *ngfor 的值
- swift - 在没有 Apple 开发者帐户的情况下设置 Firebase 电子邮件验证
- c - 关于 pthread_mutex_lock() 函数的使用,哪一项是正确的?
- c++ - 通过模板特化实现条件函数调用