sql >> Databasteknik >  >> RDS >> Mysql

är infogning baserad på val på en av kolumnerna i MySQL möjligt?

Försök med INSERT...SELECT uttalande

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

om din kolumn ID är auto incremented , du behöver inte ange 1 annars kommer det att orsaka dig ett fel.

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.

En annan punkt är om du bara vill infoga en kolumn från student s tabell måste du ange villkoret, så att du inte får ett begränsningsfel (förutsatt att ditt kolumn-ID är den primära nyckeln )

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

UPPDATERING 1

När du ser din kommentar har du den här frågan

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 måste ta bort user_id kolumnen ovan ELLER måste du lägga till ett ID i din select-sats för att matcha antalet kolumner.



  1. Vilken MySQL-typ är mest lämplig för priskolumnen?

  2. Hur man beräknar skillnaden mellan två tidsstämplar i Oracle

  3. Alias ​​Kolumnnamn i flera fall

  4. Hur man tar bort inläggsrevisioner med WP-CLI