중복 된 테이블이 아닌 기존 테이블의 속성을 사용하여 새 테이블을 만들고 싶습니다. 나는 이런 식으로하고 싶다 :A2와 같은 테이블을 생성하십시오.
CREATE TABLE New_Users LIKE Old_Users,
AS
(SELECT * FROM Old_Users GROUP BY ID) ;
그러나 위의 작동하지 않습니다. 제발, 아무도 그것을 수정할 수 있습니까? 을 바탕으로
중복 된 테이블이 아닌 기존 테이블의 속성을 사용하여 새 테이블을 만들고 싶습니다. 나는 이런 식으로하고 싶다 :A2와 같은 테이블을 생성하십시오.
CREATE TABLE New_Users LIKE Old_Users,
AS
(SELECT * FROM Old_Users GROUP BY ID) ;
그러나 위의 작동하지 않습니다. 제발, 아무도 그것을 수정할 수 있습니까? 을 바탕으로
귀하의 시도가 나쁘지 않았다. 네, LIKE
으로해야합니다. 그것은 말한다 manual에서
:
사용 등이 원래 테이블에 정의 된 컬럼 속성과 인덱스를 포함하여 다른 테이블의 정의를 기반으로 빈 테이블을 만들 수 있습니다.
그래서 당신이 할 :
CREATE TABLE New_Users LIKE Old_Users;
은 그럼 당신은
INSERT INTO New_Users SELECT * FROM Old_Users GROUP BY ID;
에 삽입하지만 당신은 하나 개의 문장에서 그것을 할 수 없습니다.
LIKE 문은 괄호 안에 있어야합니다. CREATE TABLE New_Users (LIKE Old_Users); – Marcao
아니요, 필요하지 않습니다. – fancyPants
맞습니다. 그렇지 않습니다. 죄송합니다. – Marcao
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);
@AshBurlaczenko, 내가 답변에 게시 된 링크를 살펴보면, 테이블 사양이없는 mysql 문서에 많은 예제가있다. 데이터가 없으므로 첫 번째 사양에 대한 사양이 필요하다는 것을 알 수 있지만 두 번째 예제는 해당 문서가 잘못된 경우가 아니라면 작동합니다. –
이전 테이블 – Jigberto
과 같은 동일한 prorieties를 갖는 새 테이블이 필요하고 두 번째 예제를 사용하고 "describe new_users;"를 실행하십시오. –
MySQL을 들어, 이런 식으로 작업을 수행 할 수 있습니다
CREATE TABLE New_Users SELECT * FROM Old_Users group by ID;
안녕하세요, 새 테이블을 만드는 중입니다.하지만이 새 테이블에 이전 테이블과 같은 prorieties가 있어야합니다. – Jigberto
mysql 문서화에 따라 인덱스, PK 등을 보존 할 수는 없지만 mysql documantation tells와 같은 인덱스를 정의 할 수있다. http://dev.mysql.com/doc/refman/5.0/en/create-table-select.html CREATE TABLE ... SELECT는 자동으로 색인을 생성하지 않습니다. 이는 명세서를 최대한 유연하게 만들기 위해 의도적으로 행해진 것입니다. 생성 된 테이블에서 인덱스를 원한다면 SELECT 문 앞에 다음을 지정해야합니다. mysql> CREATE TABLE 막대 (UNIQUE (n)) SELECT n FROM foo; –
CREATE TABLE new_table LIKE old_table;
또는 U이
가 OLD_TABLE FROM SELECT *로 NEW_TABLE CREATE TABLE을 사용 WHERE [하여 중복을 제거하는 열에 의해 1 기;
'LIKE'을 사용하면 새 테이블도 비슷한 인덱스를 갖게된다는 점에 유의하십시오. – Nav