Mysql
 sql >> Base de données >  >> RDS >> Mysql

l'insertion basée sur la sélection de l'une des colonnes de MySQL est-elle possible ?

Essayez INSERT...SELECT déclaration

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

si votre colonne ID est auto incremented , vous n'avez pas à spécifier le 1 sinon cela vous causera une erreur.

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.

Un autre point est, si vous ne voulez insérer qu'une seule colonne du student 's table, vous devez spécifier la condition, de sorte que vous n'obtiendrez pas d'erreur de contrainte (en supposant que votre ID de colonne est la clé primaire )

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

MISE À JOUR 1

En voyant votre commentaire, vous avez cette question

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

vous devez supprimer le user_id colonne ci-dessus OU vous devez ajouter un ID dans votre instruction select afin de faire correspondre le nombre de colonnes.