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