如何使用数组在表中插入多行

时间:2019-06-03 07:58:43

标签: sql sql-server ssms

我需要使用此代码在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是具有许多值的数组; 当我尝试添加时,我收到了该错误

  

子查询返回了多个值。当   子查询遵循=,!=,<,<=,>,> =,或当子查询用作   表达式。

如何解决此问题?

1 个答案:

答案 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,因为您的问题表明ProductsFiles之间没有关系。如果存在,将CROSS JOIN更改为INNER JOIN并添加相关的ON子句。如果您不了解JOIN语法,建议您进行查找和学习。 JOIN语法是SQL的基础知识之一,如果不学习它就不会无所适从。通过花时间阅读有关内容,您将学到更多,而不是我给您答案并尝试解释基本知识。