вставить запрос, чтобы в качестве значений были выбраны и значение select - PullRequest
0 голосов
/ 17 октября 2018

Я знаю, что вы можете использовать оператор select для предоставления всех значений, но он не позволит мне использовать его только для предоставления 1 из значений, а затем использовать другой элемент для предоставления следующего значения.

INSERT INTO table
([product code], [product description])
VALUES
(
   (SELECT [code] FROM table GROUP BY [code])
   ,'a description'
)

Но SQL Server сообщает мне

Подзапрос возвратил более 1 значения

Пока я обошел его, сделав это выражение select представлением, а затем присоединился к нему.Было бы неплохо, если бы не нужен вид.

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вы просто хотите INSERT . . . SELECT:

INSERT INTO table ([product code], [product description])
    SELECT [code], 'a description'
    FROM table
    GROUP BY [code];
0 голосов
/ 17 октября 2018

Когда вы вставляете с помощью VALUES, вы можете вставить только одну строку за раз, однако запрос

'SELECT [код] ИЗ таблицы GROUP BY [код]'

возвращает несколько строк, следовательно, запрос не выполняется.Если вы хотите использовать VALUES для вставки, вам нужно перебрать каждую строку в запросе и вставить отдельно, однако это не нужно и неэффективно.Как уже отмечали другие, гораздо эффективнее просто использовать следующее:

INSERT INTO table ([product code], [product description])
     SELECT [code], 'a description'  
     FROM table 
     GROUP BY [code];
0 голосов
/ 17 октября 2018

Вы можете использовать оператор SELECT с оператором INSERT INTO . . .:

INSERT INTO table ([product code], [product description])
     SELECT [code], 'a description'  
     FROM table 
     GROUP BY [code];
...