Как вставить несколько строк в таблицу, используя массив - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно добавить несколько строк одновременно в моей таблице 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 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.

Как решить эту проблему?

1 Ответ

1 голос
/ 03 июня 2019

Лучшее, что я могу догадаться, это то, что вы ищете:

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, и вы не уйдете далеко, не изучив его.Вы узнаете гораздо больше, потратив время на то, чтобы прочитать об этом, чем я, предоставив вам ответ и попытавшись объяснить основы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...