2012-05-12 24 views
11

En SQL, Select into ... copia las filas en una tabla diferente (copia de seguridad). ¿Es esto posible si la tabla de respaldo tiene una estructura diferente (o diferentes nombres de columna)? Si no, ¿cuál es la mejor manera de lograr esto?seleccionar en una tabla con diferentes nombres de columna

Esto es lo que quiero hacer: TableA tiene columnas a1,a2,a3. Quiero copiar algunas filas de esta tabla a otra tabla TableB que tiene la columna b1,b2,b3,b4. Contenido de a1 para entrar en b1, a2 a b2 etc.

+0

¿Qué sabor de SQL? El único que puedo encontrar con un 'SELECT..INTO' es MS-SQL, y la documentación implica que creará una nueva tabla, que siempre debe tener la estructura" correcta ". – millimoose

+0

Gracias por el punto. Estoy trabajando en sqlite. No estaba seguro de si "Seleccionar en ..." funciona en sqlite. Lo intenté ahora, NO está funcionando en sqlite. Sin embargo, el "Insertar en ..." funciona para esto. – zolio

Respuesta

33

Los nombres de columna no importan en absoluto, siempre y la tipos de datos partido.

Si los tipos de datos de las columnas no coinciden, intente emitir los valores correspondientes. Simplemente pruebe con pequeñas tablas falsas. Asegúrese de enumerar las columnas de destino explícitamente para evitar confusiones. De esta manera:

INSERT INTO TableB (b1, b2, b3) 
SELECT a1, a2, a3 
FROM TableA 
WHERE <some condition>; 

Más detalles en el manual de SQLite here.

+0

no puede hacemos esto sin especificar los nombres de las columnas como esta ... INSERT INTO payment_reject_reasons SELECT * FROM ' de_list_reasons' esto me da un error ... – mahen3d

+1

@ user1179459: Usted * puede * hacerlo si los tipos de fila partido. Si obtiene un error, obviamente no lo hacen. Además, este formulario solo sirve para comandos ad-hoc y situaciones especiales. Normalmente debe deletrear las columnas involucradas, por lo que el comando no se romperá si agrega una columna a una de las tablas. Agregué un enlace al manual. –

Cuestiones relacionadas