Como posso inserir valores em uma tabela, usando uma subconsulta com mais de um resultado?


96

Eu realmente apreciaria sua ajuda.

Provavelmente é um problema bastante simples de resolver - mas não sou eu .. ;-)

Tenho duas tabelas no SQL Server:

  1. artigo
  2. preços

Agora quero selecionar um certo conjunto de ids e inserir algumas entradas na tabela de preços com esses IDs.

por exemplo (SQL errado e não funcionando)

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

Erro SQL -> subconsulta tem mais de 1 valor

obrigado pela ajuda


5
Uau! Tantas respostas corretas, todas em 13 de março de 12 às 21:18 (dica: você pode passar o mouse sobre o carimbo de data / hora para obter os segundos)
Rohmer

Respostas:


148

Você quer:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

onde você apenas codifica os campos constantes.


INSERT INTO iden_course(Cse_M_ID, Cse_M_Name, Cse_M_ShName, Cse_M_TotSem, Cse_M_CreatedDate) VALUES ( 'ID', 'BJF', 'BJfg', '4', Now ()) selecione max (Cse_M_ID) como ID de iden_course como adicionar nesta consulta
SANDEEP

23

Experimente isto:

INSERT INTO prices (
    group, 
    id,
    price
) 
SELECT
    7,
    articleId,
    1.50
FROM
    article 
WHERE 
    name LIKE 'ABC%';

12
INSERT INTO prices (group, id, price)
  SELECT 7, articleId, 1.50 FROM article WHERE name LIKE 'ABC%'

12

Se você estiver inserindo um registro em sua tabela, você pode fazer

INSERT INTO yourTable 
VALUES(value1, value2)

Mas como você deseja inserir mais de um registro, pode usar um SELECT FROMem sua instrução SQL.

então você vai querer fazer isso:

INSERT INTO prices (group, id, price) 
SELECT 7, articleId, 1.50
from article 
WHERE name LIKE 'ABC%'

3

a sub-consulta parece

 insert into table_name (col1,col2,....) values (select col1,col2,... FROM table_2 ...)

espero que esta ajuda


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.