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
'source' 카테고리의 다른 글
시제품의 목적은 무엇입니까? (0) | 2022.11.26 |
---|---|
컬렉션/어레이/목록에서 쉼표로 구분된 문자열을 만드는 가장 정교한 방법은 무엇입니까? (0) | 2022.11.26 |
Vue.js 또는 React 컴포넌트를 사용하는 이유 (0) | 2022.11.26 |
PHP Associative Arrays가 주문되었습니까? (0) | 2022.11.26 |
matplotlib의 명명된 색상 (0) | 2022.11.25 |