121 Stimmen

mysql -> insert into tbl (aus einer anderen Tabelle auswählen) und einige Standardwerte

Wie der Titel schon sagt, versuche ich, in eine Tabelle Werte aus einer anderen Tabelle und einige Standardwerte einzufügen.

INSERT INTO def (catid, title, page, publish) 
(SELECT catid, title from abc),'page','yes')

INSERT INTO def (catid, title, page, publish) 
VALUES
((SELECT catid, title from abc),'page','yes'))

Die erste Abfrage führt zu einem Mysql-Fehler und die zweite gibt an, dass die Spaltenanzahl nicht übereinstimmt.

Was muss ich tun?

262voto

Nican Punkte 7663

Man muss es einfach tun:

INSERT INTO def (catid, title, page, publish) 
SELECT catid, title, 'page','yes' from `abc`

12voto

kanishka vatsa Punkte 1778

Wenn Sie alle Spalten einfügen wollen, dann

insert into def select * from abc;

hier sollte die Anzahl der Spalten in def gleich abc sein.

wenn Sie die Teilmengen von Spalten einfügen wollen, dann

insert into def (col1,col2, col3 ) select scol1,scol2,scol3 from abc; 

wenn Sie einige fest aufgezeichnete Werte einfügen wollen, dann

insert into def (col1, col2,col3) select 'hardcoded value',scol2, scol3 from abc;

12voto

Frankie Punkte 460
INSERT INTO def (field_1, field_2, field3) 
VALUES 
('$field_1', (SELECT id_user from user_table where name = 'jhon'), '$field3')

8voto

Redips77 Punkte 121

Wenn Sie eine Teilmenge der Quelltabelle kopieren möchten, können Sie dies tun:

INSERT INTO def (field_1, field_2, field3)

SELECT other_field_1, other_field_2, other_field_3 from `abc`

oder zu kopieren ALLE Felder von der Quelltabelle zur Zieltabelle können Sie einfacher durchführen:

INSERT INTO def 
SELECT * from `abc`

3voto

crmpicco Punkte 15465

Wenn Sie mit MySQL in eine Tabelle einfügen, die einen automatisch inkrementierenden Primärschlüssel hat, und Sie eine eingebaute MySQL-Funktion verwenden wollen, wie z.B. NOW() dann können Sie etwa so vorgehen:

INSERT INTO course_payment 
SELECT NULL, order_id, payment_gateway, total_amt, charge_amt, refund_amt, NOW()
FROM orders ORDER BY order_id DESC LIMIT 10;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X