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
OUTPUT
clá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 completarlacourses
desde 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 SELECT
instrucció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 insertarVARCHAR
enINT
, oTINYINT
enINT
) 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