Jak wstawić wybrane wiersze z table_source
do table_target
za pomocą SQL w MySQL gdzie:INSERT INTO ... SELECT bez wyszczególnieniem wszystkich kolumn
- obie tabele mają ten sam schemat
- Wszystkie kolumny należy przenieść z wyjątkiem auto-przyrost
id
- bez wyraźnego piśmie wszystkie nazwy kolumn, jak to byłoby uciążliwe
trywialne INSERT INTO table_target SELECT * FROM table_source
kończy się niepowodzeniem przy duplikowaniu wpisów dla klucza podstawowego.
Jesteś dobrze, w końcu użyłem wyraźnej składni. Dla kompletności: łatwo uzyskaj listę kolumn za pomocą ['DESCRIBE'] (http://dev.mysql.com/doc/refman/5.0/en/describe.html), a następnie użyj składni' INSERT INTO table1 (field1, field2 , field3) SELECT table2.field1, table2.field2, table2.field3 FROM table2; ' – Jonathan
Najprostszym sposobem uzyskania nazw pól CSV: ' SELECT CONCAT (GROUP_CONCAT (SEPARATOR KOLUMNOWY ','), "\ n") FROM INFORMATION_SCHEMA .COLUMNS WHERE TABLE_SCHEMA = 'dbname' I TABLE_NAME = 'tablename' GROUP BY TABLE_NAME' – Hafenkranich