Подтвердить что ты не робот

СОЗДАТЬ ТАБЛИЦУ КАК А1 как A2

Я хочу создать новую таблицу со свойствами старой таблицы и без дубликатов. Я хочу сделать что-то вроде этого:

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

Но выше не работает. Пожалуйста, кто-нибудь может изменить его для работы?

4b9b3361

Ответ 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