[mysql] 별도의 CREATE TABLE없이 SELECT 문에서 임시 테이블을 만듭니다.

create table 문을 사용하지 않고 각 열 유형을 지정하지 않고 select 문에서 임시 (세션 전용) 테이블을 만들 수 있습니까? 파생 테이블 에서이 기능을 수행 할 수 있지만 임시 테이블 (문장 전용)이므로 재사용하고 싶습니다.

테이블 작성 명령을 작성하지 않고 열 목록과 유형 목록을 일치시키지 않으면 시간이 절약됩니다.



답변

CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)

http://dev.mysql.com/doc/refman/5.7/en/create-table.html에 있는 매뉴얼에서

테이블을 작성할 때 TEMPORARY 키워드를 사용할 수 있습니다. 임시 테이블은 현재 세션에 표시 되고, 자동 삭제 세션이 폐쇄 될 때. 이는 서로 다른 두 개의 세션이 서로 충돌하지 않거나 동일한 이름의 TEMPORARY가 아닌 기존 테이블과 동일한 임시 테이블 이름을 사용할 수 있음을 의미합니다. (기존 테이블은 임시 테이블이 삭제 될 때까지 숨겨집니다.) 임시 테이블을 작성하려면 CREATE TEMPORARY TABLES 권한이 있어야합니다.


답변

임시 테이블에 인덱스추가 해야하는 경우 psparrow의 답변 외에도 다음을 수행하십시오.

CREATE TEMPORARY TABLE IF NOT EXISTS
  temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
  SELECT col_1, coll_2, coll_3
  FROM mytable
)

그것은 또한 작동 PRIMARY KEY


답변

이 구문을 사용하십시오.

CREATE TEMPORARY TABLE t1 (select * from t2);


답변

선택하기 전에 엔진이 있어야합니다 :

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)


답변

ENGINE=MEMORY테이블에 BLOB/ TEXT열이 포함 된 경우 지원되지 않습니다


답변

CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)


답변