Wenn es nützlich ist, habe ich eine Abfrage durchgeführt, um zu vermeiden, dass der letzte Teil der Abfrage "bei Duplikaten" für Versionen> = 5.0 von Hand geschrieben wird:
SELECT GROUP_CONCAT( CONCAT(COLUMN_NAME,"=values(", COLUMN_NAME,")") SEPARATOR ", ") FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'database_name' AND TABLE_NAME = 'table_name';
und seine Ausgabe ist diese:
a=values(a), b=values(b), c=values(c), d=values(d)
In einer Tabelle mit den Spalten a, b, c und d können Sie den ersten Teil der Abfrage anhängen:
INSERT INTO `tableName` (`a`,`b`,`c`, `d`) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE a=values(a), b=values(b), c=values(c), d=values(d)
UPDATE:
Für eine sehr lange Liste von Spalten wird möglicherweise eine abgeschnittene Ausgabe angezeigt. Sie können diese Anweisung vor der obigen Abfrage verwenden (danke Onkel iroh ):
SET SESSION group_concat_max_len = 1000000;