2012-03-13 18 views
51

Realmente agradecería su ayuda.¿Cómo puedo insertar valores en una tabla, usando una subconsulta con más de un resultado?

Probablemente es un problema bastante simple de resolver - pero no soy el uno .. ;-)

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 ID.

p. Ej. (SQL mal y que no trabaja)

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

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

gracias por la ayuda

+1

¡Guau! Tantas respuestas correctas todas el 13 de marzo de 12 a 21:18 (pista: puedes pasar el cursor sobre la marca de tiempo para obtener los segundos) – Rohmer

Respuesta

82

que desee:

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

en el que sólo codificar el campos constantes.

+0

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()) seleccione max (Cse_M_ID) como ID de iden_course cómo agregar en esta consulta – SANDEEP

10

Si va a insertar un registro en su mesa, puede hacerlo

INSERT INTO yourTable 
VALUES(value1, value2) 

Pero puesto que desea insertar más de un registro, se puede utilizar un SELECT FROM en la instrucción SQL.

lo que se quiere hacer esto:

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

la consulta sub parece

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

esperanza esta ayuda

16

Prueba esto:

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