像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 [删除重复的列];