我需要使用此代码在sql服务器表中同时添加多行
declare @idproduct int
declare @idfile int
set @idproduct = (select id from Products where name = 'DR-8416')
set @idfile = (select id from Files where filename like '%8416%')
insert into ProductsFiles(idproducts, idfile) values (@idproduct, @idfile)
@idfile是具有许多值的数组; 当我尝试添加时,我收到了该错误
子查询返回了多个值。当 子查询遵循=,!=,<,<=,>,> =,或当子查询用作 表达式。
如何解决此问题?
答案 0 :(得分:1)
我所能猜到的最好的是:
INSERT INTO ProductsFiles (idproducts,
idfile)
SELECT P.id,
F.id
FROM Products AS P
CROSS JOIN Files AS F
WHERE P.[name] = 'DR-8416'
AND F.[filename] LIKE '%8416%';
请注意,我曾经用作CROSS JOIN
,因为您的问题表明Products
和Files
之间没有关系。如果存在,将CROSS JOIN
更改为INNER JOIN
并添加相关的ON
子句。如果您不了解JOIN
语法,建议您进行查找和学习。 JOIN
语法是SQL的基础知识之一,如果不学习它就不会无所适从。通过花时间阅读有关内容,您将学到更多,而不是我给您答案并尝试解释基本知识。