¿Cómo puedo insertar valores en una tabla, usando una subconsulta con más de un resultado?


96

Realmente agradecería su ayuda.

Probablemente sea un problema bastante simple de resolver, pero no soy yo ... ;-)

Tengo dos tablas en SQL Server:

  1. artículo
  2. precios

Ahora quiero seleccionar un cierto conjunto de identificadores e insertar algunas entradas en la tabla de precios con esos identificadores.

por ejemplo (SQL incorrecto y no funciona)

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

Error de SQL -> la subconsulta tiene más de 1 valor

gracias por la ayuda


5
¡Guauu! Tantas respuestas correctas, todas el 13 de marzo de 2012 a las 21:18 (pista: puede pasar el cursor sobre la marca de tiempo para obtener los segundos)
Rohmer

Respuestas:


148

Usted quiere:

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

donde simplemente codifica los 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', ahora ()) select max (Cse_M_ID) como identificación de iden_course cómo añadir en esta consulta
SANDEEP

23

Prueba esto:

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

Si está insertando un registro en su tabla, puede hacer

INSERT INTO yourTable 
VALUES(value1, value2)

Pero como desea insertar más de un registro, puede usar un SELECT FROMen su declaración SQL.

entonces querrás hacer esto:

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

3

la subconsulta parece

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

espero que esto ayude


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.