sql >> Database teknologi >  >> RDS >> Mysql

er insert baseret på select på en af ​​kolonnerne i MySQL muligt?

Prøv INSERT...SELECT erklæring

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

hvis din kolonne ID er auto incremented , du behøver ikke at angive 1 ellers vil det give dig en fejl.

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.

Et andet punkt er, hvis du kun ønsker at indsætte én kolonne fra student s tabel, skal du angive betingelsen, så du ikke får begrænsningsfejl (forudsat at dit kolonne-id er den primære nøgle )

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

OPDATERING 1

Når du ser din kommentar, har du denne forespørgsel

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

du skal fjerne user_id kolonne ovenfor ELLER du skal tilføje et ID i din vælg-udsagn for at matche antallet af kolonner.



  1. Sådan fungerer UTC_TIMESTAMP() i MariaDB

  2. MySQL:Du kan ikke angive måltabellens 'opgaver' til opdatering i FROM-klausulen

  3. Hvordan ændrer man en database til postgresql med Symfony 2.0?

  4. Behov for kun at hente registreringer fra MySQL-databasen efter dato fra et datetime-felt