СОЗДАТЬ ТАБЛИЦУ КАК А1 как A2
Я хочу создать новую таблицу со свойствами старой таблицы и без дубликатов. Я хочу сделать что-то вроде этого:
CREATE TABLE New_Users LIKE Old_Users,
AS
(SELECT * FROM Old_Users GROUP BY ID) ;
Но выше не работает. Пожалуйста, кто-нибудь может изменить его для работы?
Ответы
Ответ 1
Ваша попытка была не так уж плоха. Вы должны сделать это с помощью LIKE
, да.
В руководстве говорится:
Используйте LIKE для создания пустой таблицы на основе определения другого таблицы, включая любые атрибуты столбца и индексы, определенные в оригинальная таблица.
Итак, вы делаете:
CREATE TABLE New_Users LIKE Old_Users;
Затем вы вставляете
INSERT INTO New_Users SELECT * FROM Old_Users GROUP BY ID;
Но вы не можете сделать это в одном утверждении.
Ответ 2
На основе http://dev.mysql.com/doc/refman/5.0/en/create-table-select.html
Как насчет:
Create Table New_Users Select * from Old_Users Where 1=2;
и если это не сработает, просто выберите строку и обрезайте после создания:
Create table New_Users select * from Old_Users Limit 1;
Truncate Table New_Users;
EDIT:
Я заметил ваш комментарий ниже о необходимости индексов и т.д. Попробуйте:
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);
Ответ 3
Для MySQL вы можете сделать это следующим образом:
CREATE TABLE New_Users SELECT * FROM Old_Users group by ID;
Ответ 4
CREATE TABLE new_table LIKE old_table;
или u можете использовать этот
CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY [столбец для удаления дубликатов];
Ответ 5
Вы можете использовать запрос ниже, чтобы создать таблицу и вставить различные значения в эту таблицу:
Select Distinct Column1, Column2, Column3 into New_Users from Old_Users