2010-03-04 16 views
23

Tengo dos tablas.seleccionar de una tabla e insertar en otra

TABLE_A (nid, vid, tipo, título, uid)

Table_B (id, questionText)

tengo que insertar los registros de Table_B en TABLE_A. Intenté esto:

INSERT INTO Table_A (nid, vid, type, title, uid) 
VALUES ('', '', multichoice', (SELECT questiontext from Table_B), '1') 

pero está lanzando un error.

¿Cuál debería ser la afirmación correcta?

UPD: Debo añadir que nid es autoincrement y que el valor de vid debe ser el mismo que nid.

Respuesta

46

has necesitado

INSERT INTO Table_A (nid, vid, type, title, uid) 
SELECT '', 
     '', 
     'multichoice', 
     questiontext , 
     '1' 
from Table_B 

Tenga una mirada en INSERT ... SELECT Syntax

+0

nid is autoincrement. ¿Cómo puedo agregar el nid recién creado en vid también en esta declaración? – nrk

+0

@nrk 'NULL'? [carácter relleno] – Matt

8

Se debe utilizar la siguiente consulta SQL:

INSERT INTO Target(A, B, C) 
    SELECT A, B, C 
    FROM Source 
+0

Esto funcionó para mí en MySQL. – aalaap

+0

Gracias, editó la publicación. –

0

use este método

INSERTE EN el destino (nombres de columna) (seleccione las columnas del ejemplo 3);

La columna debe ser del mismo tipo aquí.

-1

Creo que la respuesta correcta a esto podría ser select into, por lo que veo de las otras respuestas es que ustedes insertan antes de obtener el valor de la Tabla B como usted primero debe obtener el valor que es: seleccionar de tabla B luego inserte en la tabla A. debe buscar en las líneas de seleccionar en

+0

Aquí hay una cita del sitio web de MySQL: SELECT ... en forma de SELECT permite que un resultado de la consulta se escriba en un archivo o se almacene en variables. Y este es su [enlace] (http://dev.mysql.com/doc/refman/5.0/en/select-into.html). No ayuda cuando desea copiar registros en otra tabla. – Mehran

0
insert into table2(columnname)select columnname from table1 
Cuestiones relacionadas