MAAK TABEL ZOALS A1 als A2

Ik wil een nieuwe tabel maken met eigenschappen van een oude tabel en zonder duplicaten. Ik wil zoiets als dit doen:

CREATE TABLE New_Users  LIKE Old_Users, 
AS
(SELECT * FROM Old_Users GROUP BY ID) ;

Maar het bovenstaande werkt niet. Kan iemand het aanpassen zodat het werkt?


Antwoord 1, autoriteit 100%

Je poging was niet zo slecht. Je moet het doen met LIKE, ja.

In de handleidingstaat:

Gebruik LIKE om een ​​lege tabel te maken op basis van de definitie van een andere
tabel, inclusief alle kolomattributen en indexen gedefinieerd in de
originele tafel.

Dus jij doet:

CREATE TABLE New_Users  LIKE Old_Users;

Vervolgens voeg je in met

INSERT INTO New_Users SELECT * FROM Old_Users GROUP BY ID;

Maar je kunt het niet in één verklaring doen.


Antwoord 2, autoriteit 2%

Gebaseerd op http://dev.mysql. com/doc/refman/5.0/en/create-table-select.html

Hoe zit het met:

Create Table New_Users Select * from Old_Users Where 1=2;

en als dat niet werkt, selecteert u gewoon een rij en kapt u deze af na het maken:

Create table New_Users select * from Old_Users Limit 1;
Truncate Table New_Users;

BEWERKEN:

Ik heb je opmerking hieronder opgemerkt over het nodig hebben van indexen, enz. Probeer:

show create table old_users;
#copy the output ddl statement into a text editor and change the table name to new_users
#run the new query
insert into new_users(id,name...) select id,name,... form old_users group by id;

Dat zou het moeten doen. Het lijkt erop dat u dit doet om duplicaten te verwijderen? In dat geval wilt u misschien een unieke index op id. als het een primaire sleutel is, zou deze al aanwezig moeten zijn. U kunt ofwel:

#make primary key
alter table new_users add primary key (id);
#make unique
create unique index idx_new_users_id_uniq on new_users (id);

Antwoord 3

Voor MySQL kunt u het als volgt doen:

CREATE TABLE New_Users   SELECT * FROM Old_Users group by ID;

Antwoord 4

CREATE TABLE new_table LIKE old_table;

of u kunt dit gebruiken

MAAK TABEL new_table als
SELECTEER * UIT old_table WAAR 1 GROUP BY [kolom om duplicaten te verwijderen door];


Antwoord 5

U kunt onderstaande query gebruiken om een ​​tabel te maken en verschillende waarden in deze tabel in te voegen:

Select Distinct Column1, Column2, Column3 into New_Users from Old_Users

Other episodes