Tengo una consulta que se inserta usando un select:
INSERT INTO courses (name, location, gid)
SELECT name, location, gid
FROM courses
WHERE cid = $cid
¿Es posible seleccionar solo "nombre, ubicación" para la inserción y establecer gid en otra cosa en la consulta?
mysql
sql
insert-select
Kyle
fuente
fuente

OUTPUTcláusula , que le permite poner lo que haya insertado en otra tabla también. No creo que MySQL tenga un equivalente. Puede crear una tabla temporal , seleccionarla en esa tabla, luego completarlacoursesdesde esa tabla y luego usar la tabla temporal para cualquier otra cosa que necesite.Sí lo es. Puedes escribir :
o puede obtener valores de otra combinación de la selección ...
fuente
Sintaxis correcta: seleccionar la ortografía fue incorrecta
fuente
Claro, ¿qué quieres usar para el gid? un valor estático, PHP var, ...
Un valor estático de 1234 podría ser como:
fuente
Creo que su declaración INSERT es incorrecta, vea la sintaxis correcta: http://dev.mysql.com/doc/refman/5.1/en/insert.html
editar: como Andrew ya señaló ...
fuente
Por supuesto que puede.
Sin embargo, debe tenerse en cuenta una cosa: la
INSERT INTO SELECTinstrucción copia datos de una tabla y los inserta en otra tabla Y requiere que los tipos de datos en las tablas de origen y destino coincidan. Si los tipos de datos de las columnas de la tabla dada no coinciden (es decir, al intentar insertarVARCHARenINT, oTINYINTenINT) el servidor MySQL arrojará unSQL Error (1366).Así que ten cuidado.
Aquí está la sintaxis del comando:
Nota al margen: hay una manera de evitar el problema de inserción de diferentes tipos de columna mediante el uso de la conversión en su
SELECT, por ejemplo:Esta conversión (
CAST()es sinónimo deCONVERT()) es muy útil si sus tablas tienen diferentes juegos de caracteres en la misma columna de la tabla (lo que puede conducir a la pérdida de datos si no se maneja adecuadamente).fuente
La sintaxis correcta para su consulta es:
fuente