sql >> Base de Datos >  >> RDS >> Mysql

¿Es posible la inserción basada en la selección de una de las columnas en MySQL?

Intenta INSERT...SELECT declaración

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition

si su columna ID se auto incremented , no tienes que especificar el 1 o de lo contrario le causará un error.

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students         -- this will select all students on the table
                      -- and add $200 on thier fees.

Otro punto es, si solo desea insertar una columna del student , necesita especificar la condición, por lo que no obtendrá un error de restricción (suponiendo que su ID de columna sea la clave principal )

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM   students
WHERE  columnName = 'blahBlah'

ACTUALIZACIÓN 1

Al ver tu comentario, tienes esta consulta

INSERT INTO coupon_allotment (page_id, offer_id, coupon_code, user_id) 
SELECT page_id, 4, 'ABC'        -- number of columns mismatch, right?
FROM pages_discounts_association 
WHERE discount_id = 4

necesitas eliminar el user_id columna de arriba O necesita agregar un ID en su declaración de selección para que coincida con el número de columnas.