Saya bergulat cukup lama dengan sintaks yang tepat untuk CREATE TEMPORARY TABLE SELECT. Setelah mengetahui beberapa hal, saya ingin berbagi jawaban dengan komunitas lainnya.
Informasi dasar tentang pernyataan tersebut tersedia di tautan MySQL berikut:
BUAT PILIHAN TABEL dan BUAT TABEL .
Kadang-kadang bisa menakutkan untuk menafsirkan spesifikasi. Karena kebanyakan orang belajar paling baik dari contoh, saya akan membagikan bagaimana saya membuat pernyataan kerja, dan bagaimana Anda dapat memodifikasinya agar berfungsi untuk Anda.
-
Tambahkan beberapa indeks
Pernyataan ini menunjukkan cara menambahkan beberapa indeks (perhatikan bahwa nama indeks - dalam huruf kecil - adalah opsional):
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
-
Tambahkan kunci utama baru :
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
-
Buat kolom tambahan
Anda dapat membuat tabel baru dengan lebih banyak kolom daripada yang ditentukan dalam pernyataan SELECT. Tentukan kolom tambahan dalam definisi tabel. Kolom yang ditentukan dalam definisi tabel dan tidak ditemukan di pilih akan menjadi kolom pertama di tabel baru, diikuti oleh kolom yang disisipkan oleh pernyataan SELECT.
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
-
Mendefinisikan ulang tipe data untuk kolom dari SELECT
Anda dapat mendefinisikan ulang tipe data kolom yang sedang DIPILIH. Pada contoh di bawah, tag kolom adalah MEDIUMINT di core.my_big_table dan saya mendefinisikan ulang menjadi BIGINT di 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
-
Definisi bidang lanjutan selama pembuatan
Semua definisi kolom biasa tersedia seperti saat Anda membuat tabel normal. Contoh:
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