source

A1과 같은 테이블을 A2로 작성

manycodes 2022. 11. 26. 13:57
반응형

A1과 같은 테이블을 A2로 작성

오래된 테이블의 속성을 가지고 중복되지 않은 새 테이블을 만들고 싶습니다.나는 다음과 같은 것을 하고 싶다.

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

하지만 위는 작동하지 않습니다.작동하도록 수정할 수 있는 사람 있나요?

네 시도는 그렇게 나쁘지 않았어.같이 해야 돼요.LIKE,네.

매뉴얼에는 다음과 같이 기재되어 있습니다.

LIKE를 사용하여 원래 테이블에 정의된 열 속성 및 인덱스를 포함하여 다른 테이블의 정의에 따라 빈 테이블을 만듭니다.

그럼, 다음과 같이 해 주세요.

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;

그래도 되지 않으면 행을 선택하고 작성 후 잘라내기만 하면 됩니다.

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;

테이블 new_table Like old_table을 만듭니다.

또는 이것을 사용할 수 있습니다.

테이블 new_table을 SELECT * FROM old_table WHERE 1 GROUP BY [복제 삭제 기준 열]로 작성합니다.

다음 쿼리를 사용하여 테이블을 만들고 이 테이블에 고유한 값을 삽입할 수 있습니다.

Select Distinct Column1, Column2, Column3 into New_Users from Old_Users

언급URL : https://stackoverflow.com/questions/10147565/create-table-like-a1-as-a2

반응형