2016-08-02 7 views
1

Dies ist ein einfaches Problem, aber ich fühle mich wie es sollte eine elegante Lösung sein. Ich habe ein Skript hatte, die unter Verwendung dieser Anweisung funktioniert:MySQL INSERT in Select * von mit Standard Timestamp Spalte

insert into table1 select * from table2 where pk = "'.$pk.'"; 

Vor kurzem habe ich eine Spalte zu Ende table1 hinzufügen möchten, die now() eine Timestamp-Spalte mit Standardwert ist. Dies funktioniert im Allgemeinen und ich erwarte nicht die obige Aussage zu ändern, aber wenn ich die neue Timestamp-Spalte hinzufügen, wird die obige Aussage nicht mit dem folgenden Fehler:

column count doesn't match value count

+0

Bitte erklären Sie ein bisschen mehr. Zeigen Sie Ihren Anwendungsfall besser. – 1000111

+0

ja versehentlich gedrückt speichern –

+0

'in jobticket.flatdestroyed einfügen (col1, col2) wählen Sie col1, col2, .....' Wählen Sie also die Spalten anders als die Zeitmarke auf und einfügen in sollte die Spalten außer dem Zeitstempel und wenn Sein Standard als aktueller Zeitstempel sollte es tun, was Sie wollen. –

Antwort

1

Hier sind 2-Lösung für sie, entweder geben Sie Ihre Spalten Liste

insert into table1 (col1, col2) select col1, col2 from table2 where pk = "'.$pk.'"; 

oder

gleichen Spalte in Tabelle1 erstellen Spaltenliste in Abfrage

0

Sorry, zu vermeiden, kommt oft vor, dass, sobald Ich stelle meine Frage hier auf Stackoverflow Ich versuche etwas, das funktioniert. Ich konnte die Aussage in der Frage zu dem folgenden ändern, das funktioniert, obwohl ich die Standardfunktionalität für die neue Spalte verliere. Da die letzte Spalte in diesem Fall fest codiert ist, funktioniert sie immer noch auf die gleiche Weise.

insert into table1 select *, now() from table2 where pk = "'.$pk.'"; 
Verwandte Themen