programing

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

sourcetip 2022. 10. 18. 22:26
반응형

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

create table 문을 사용하지 않고 각 열 유형을 지정하지 않고 select 문에서 임시(세션 전용) 테이블을 만들 수 있습니까?파생 테이블이 가능한 것은 알고 있습니다만, 초임시(스테이트먼트 전용)이기 때문에 재사용하고 싶습니다.

create table 명령어를 작성하지 않아도 컬럼리스트와 타입리스트를 일치시킬 필요가 없다면 시간을 절약할 수 있습니다.

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

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

TEMPORY 키워드는 테이블을 작성할 때 사용할 수 있습니다.임시 테이블은 현재 세션에만 표시되며 세션이 닫히면 자동으로 삭제됩니다.즉, 2개의 다른 세션이 서로 경합하지 않고 같은 이름의 기존 비 TEMPORY 테이블과 같은 임시 테이블 이름을 사용할 수 있습니다.(기존 테이블은 임시 테이블이 폐기될 때까지 숨겨집니다).임시 테이블을 작성하려면 CREATE TEMPOLY 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

phpMyAdmin과 같은 것으로 사용하는 경우 SELECT 문은 임시 테이블에서 작동하지만, 그 SELECT를 실행하면 임시 테이블이 사라집니다.즉, 데이터를 변경하는 'action' 스테이트먼트(DELETE, UPDATE)가 완료될 때까지 결과를 표시하지 않습니다.

언급URL : https://stackoverflow.com/questions/5859391/create-a-temporary-table-in-a-select-statement-without-a-separate-create-table

반응형