2011-05-05 9 views
17

Perdóname como estoy relativamente nuevo en SQL. Pero estoy tratando de tomar datos modificados de una consulta SELECT en una tabla y usarlos para completar datos en otra tabla.SQL INSERT SELECT sobre la base de los resultados de

SELECT ID FROM TABLE WHERE VALUE=10 

quiero insertar las identificaciones resultantes en otra tabla, pero con modificaciones tales que el valor es:

1stString.ID.2ndString

que he encontrado respuestas para el uso de la ID de SELECT en el inserto, pero parece que no puedo hacerlo funcionar cuando trato de concatenar. También hay otros valores que estoy inserción, pero son literales (Estoy tratando de inicializar los ajustes por defecto clave para la identificación de determinada en otra tabla.

El uso de MS SQL Studio 2008, por cierto.

+1

nos muestran lo que has – BlackBear

Respuesta

29
INSERT INTO table (field) 
SELECT '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

Editar - respuesta al comentario: Estás en el camino correcto, pero que desea seleccionar sus cadenas no modificables desde su mesa, así:

INSERT INTO table1 (field1, field2, field3) 
SELECT '1stVal', '2ndVal', '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

esto también es illustrat ed en la respuesta de Dustin Laine.

+0

¿El estudio del SQL todavía utilizan + para la concatenación de cadenas? Si no, sería ||. –

+1

Esto parece ser una solución bastante buena. ¿Qué pasa si necesito insertar más valores, que NO son de la tabla 2? –

+1

^Último comentario fue cortado. Por ejemplo, sin embargo, si yo quiero poner "1", "Cadena", '1stString'. + Fundido (id como varchar (50)) + '.2ndString' en las distintas columnas de la tabla, donde la única información que viene de table2 es "id". ¿Sería simplemente INSERTAR EN la tabla1 (campo1, campo2, campo3) 'firstval', '2ndval', SELECCIONAR '1stString' + molde (id como varchar (50)) + '.2ndString' FROM table2 DONDE otherID = 10? Lo sentimos, el formato es complicado con los comentarios ... –

6
INSERT table1 
(
    f1, f2, f3, f4 
) 
SELECT f1, f2, f3, 'defaultval' as f4 
FROM table2 
WHERE value = 1 
Cuestiones relacionadas