Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ist das Einfügen basierend auf der Auswahl einer der Spalten in MySQL möglich?

Versuchen Sie es mit INSERT...SELECT Erklärung

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

wenn Ihre Spalte ID wird auto incremented , müssen Sie 1 nicht angeben andernfalls wird es Ihnen einen Fehler verursachen.

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.

Ein weiterer Punkt ist, wenn Sie nur eine Spalte aus dem student einfügen möchten 's-Tabelle müssen Sie die Bedingung angeben, damit Sie keinen Einschränkungsfehler erhalten (vorausgesetzt, Ihre Spalten-ID ist der Primärschlüssel )

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

AKTUALISIERUNG 1

Wenn Sie Ihren Kommentar sehen, haben Sie diese Frage

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

müssen Sie entfernen die user_id Spalte oben ODER Sie müssen hinzufügen eine ID in Ihrer select-Anweisung, um die Anzahl der Spalten anzupassen.