sql >> Databáze >  >> RDS >> Mysql

Vytvořte dočasnou tabulku v MySQL s indexem z výběru

Dlouho jsem zápasil se správnou syntaxí pro CREATE TEMPORARY TABLE SELECT. Když jsem přišel na pár věcí, chtěl jsem se o odpovědi podělit se zbytkem komunity.

Základní informace o příkazu jsou k dispozici na následujících odkazech MySQL:

VYTVOŘIT VÝBĚR TABULKY a VYTVOŘIT TABULKU .

Občas může být skličující interpretovat specifikaci. Protože většina lidí se nejlépe učí z příkladů, podělím se o to, jak jsem vytvořil pracovní prohlášení a jak jej můžete upravit, aby vám fungovalo.

  1. Přidat více indexů

    Tento příkaz ukazuje, jak přidat více indexů (všimněte si, že názvy indexů – malými písmeny – jsou volitelné):

    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
    
  2. Přidat nový primární klíč :

    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
    
  3. Vytvořte další sloupce

    Můžete vytvořit novou tabulku s více sloupci, než je uvedeno v příkazu SELECT. Zadejte další sloupec v definici tabulky. Sloupce specifikované v definici tabulky a nenalezené v selectu budou první sloupce v nové tabulce, následované sloupci vloženými příkazem 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
    
  4. Předefinování datových typů pro sloupce z SELECT

    Můžete předefinovat datový typ sloupce, který se vybírá. V níže uvedeném příkladu je značka sloupce MEDIUMINT v core.my_big_table a já ji předefinuji na BIGINT v 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
    
  5. Pokročilé definice polí během vytváření

    Všechny obvyklé definice sloupců jsou k dispozici jako při vytváření normální tabulky. Příklad:

    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
    


  1. Jak automaticky spravovat převzetí služeb při selhání databáze MySQL pro Moodle

  2. java.sql.SQLException:Po ukončení sady výsledků v mysql

  3. Jak správně zacházet s mezinárodním charakterem v PHP / MySQL / Apache

  4. ORA-38868