Jak sklonować tabelę insert ... select

0

Witam
Chciałbym skopiować tabelę w MySQL z wykorzystaniem insert...select, ale za każdym razem otrzymuję błąd.
Proszę o pomoc.
Mam tabelę autor :
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id_autor | int(11) | NO | PRI | NULL | auto_increment |
| imie | varchar(45) | YES | | NULL | |
| nazwisko | varchar(45) | YES | | NULL | |
| data_ur | date | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+

I chcę skopiować rekordy do drugiej tabeli nowi_autorzy.
W tym celu tworzę tabelę nowi autorzy.
CREATE TABLE nowi_autorzy(id_autor integer not null primary key auto_increment);

Następnie polecenie:
INSERT INTO nowi_autorzy(id_autor,imie,nazwisko,data_ur) SELECT id_autor,imie,nazwisko,data_ur FROM autor;
ERROR 1054 (42S22): Unknown column 'imie' in 'field list'
Próbowałem też tak, INSERT INTO nowi_autorzy(id_autor,imie,nazwisko,data_ur) SELECT (id_autor,imie,nazwisko,data_ur) FROM autor;
ERROR 1241 (21000): Operand should contain 1 column(s)

Co robię źle?
Proszę o pomoc.
Pozdrawiam

5

Tabela nowi_autorzy posiada tylko kolumnę id_autor, nie posiada innych kolumn, w tym kolumny imie. Dodaj pozostałe kolumny.

0

Tak też się nie da.
insert into nowi_autorzy select * from autor;
ERROR 1136 (21S01): Column count doesn't match value count at row 1

0

Dlaczego kolumn nie można skopiować?

0

Pokaż strukturę tej nowej tabeli, do której chcesz kopiować.

0

Rada koleżanki pomogła. Myślałem, że nie trzeba tworzyć nazw kolumn, tylko skopiuje się wszystko z automatu.

0

Alternatywnie, możesz użyć CTAS:

create table moja_kopia as select * from inna_tabelka;

1 użytkowników online, w tym zalogowanych: 0, gości: 1