像A1一样创build表格A1

我想创build一个新的表,旧表的属性,没有重复。 我想要做这样的事情:

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

但上述不起作用。 请,任何人都可以修改它的工作?

你的尝试不是那么糟糕。 你必须用LIKE来做,是的。

在手册中说:

使用LIKE根据另一个表的定义(包括原始表中定义的任何列属性和索引)创build一个空表。

所以你也是:

 CREATE TABLE New_Users LIKE Old_Users; 

然后你插入

 INSERT INTO New_Users SELECT * FROM Old_Users GROUP BY ID; 

但是你不能在一个声明中这样做。

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

关于什么:

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

如果这不起作用,只需select一行并在创build后截断:

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

编辑:

我注意到你的评论下面关于需要索引等尝试:

 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; 

这应该做到这一点。 看来你正在这样做,摆脱重复? 在这种情况下,您可能需要在id上添加唯一索引。 如果这是一个主键,这应该已经到位。 你可以:

 #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); 

对于MySQL,你可以这样做:

 CREATE TABLE New_Users SELECT * FROM Old_Users group by ID; 

CREATE TABLE new_table LIKE old_table;

或者你可以使用这个

CREATE TABLE new_table SELECT * FROM old_table WHERE 1 GROUP BY [删除重复的列];