Jeg kæmpede et stykke tid med den rigtige syntaks til CREATE TEMPORARY TABLE SELECT. Efter at have fundet ud af et par ting, ville jeg dele svarene med resten af fællesskabet.
Grundlæggende information om erklæringen er tilgængelig på følgende MySQL-links:
OPRET TABELVALG og OPRET TABEL .
Til tider kan det være skræmmende at fortolke specifikationerne. Da de fleste mennesker lærer bedst af eksempler, vil jeg dele, hvordan jeg har lavet en arbejdserklæring, og hvordan du kan ændre den, så den fungerer for dig.
-
Tilføj flere indekser
Denne erklæring viser, hvordan man tilføjer flere indekser (bemærk, at indeksnavne - med små bogstaver - er valgfrie):
CREATE TEMPORARY TABLE core.my_tmp_table (INDEX my_index_name (tag, time), UNIQUE my_unique_index_name (order_number)) SELECT * FROM core.my_big_table WHERE my_val = 1
-
Tilføj en ny primær nøgle :
CREATE TEMPORARY TABLE core.my_tmp_table (PRIMARY KEY my_pkey (order_number), INDEX cmpd_key (user_id, time)) SELECT * FROM core.my_big_table
-
Opret yderligere kolonner
Du kan oprette en ny tabel med flere kolonner, end der er angivet i SELECT-sætningen. Angiv den ekstra kolonne i tabeldefinitionen. Kolonner angivet i tabeldefinitionen og ikke fundet i select vil være første kolonner i den nye tabel efterfulgt af kolonnerne indsat af SELECT-sætningen.
CREATE TEMPORARY TABLE core.my_tmp_table (my_new_id BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY my_pkey (my_new_id), INDEX my_unique_index_name (invoice_number)) SELECT * FROM core.my_big_table
-
Omdefinering af datatyper for kolonnerne fra SELECT
Du kan omdefinere datatypen for en kolonne, der vælges. I eksemplet nedenfor er kolonnetag et MEDIUMINT i core.my_big_table, og jeg omdefinerer det til et BIGINT i core.my_tmp_table.
CREATE TEMPORARY TABLE core.my_tmp_table (tag BIGINT, my_time DATETIME, INDEX my_unique_index_name (tag) ) SELECT * FROM core.my_big_table
-
Avancerede feltdefinitioner under oprettelse
Alle de sædvanlige kolonnedefinitioner er tilgængelige, som når du opretter en normal tabel. Eksempel:
CREATE TEMPORARY TABLE core.my_tmp_table (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, value BIGINT UNSIGNED NOT NULL DEFAULT 0 UNIQUE, location VARCHAR(20) DEFAULT "NEEDS TO BE SET", country CHAR(2) DEFAULT "XX" COMMENT "Two-letter country code", INDEX my_index_name (location)) ENGINE=MyISAM SELECT * FROM core.my_big_table