Utwórz tabelę tymczasową w instrukcji SELECT bez oddzielnej Utwórz tabelę

Czy możliwe jest utworzenie tymczasowej (tylko sesyjnej) tabeli z instrukcji select bez użycia instrukcji create table i określenia każdego typu kolumny? Wiem, że tabele pochodne są do tego zdolne, ale są super-tymczasowe (tylko oświadczenie) i chcę ponownie użyć.

Zaoszczędziłoby to czas, gdybym nie musiał pisać polecenia Utwórz tabelę i utrzymywać listę kolumn i listę typów dopasowanych.

Author: einpoklum, 2011-05-02

5 answers

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

Z podręcznika znalezionego na http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Możesz użyć słowa tymczasowego podczas tworzenia tabeli. Tabela tymczasowa jest widoczna tylko dla bieżącej sesji i jest automatycznie upuszczana po zamknięciu sesji. Oznacza to, że dwie różne sesje mogą używać tej samej tymczasowej nazwy tabeli bez kolidowania ze sobą lub z istniejącą nie tymczasową tabelą o tej samej nazwie. (The istniejąca tabela jest ukryta do momentu upuszczenia tymczasowej tabeli.) Aby utworzyć tymczasowe tabele, musisz mieć przywilej Utwórz tymczasowe tabele.

 709
Author: psparrow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-04 10:30:37

Oprócz psparrow ' S odpowiedź jeśli potrzebujesz Dodać indeks do tymczasowej tabeli zrób:

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

Działa również z PRIMARY KEY

 121
Author: RafaSashi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-13 11:09:56

Użyj tej składni:

CREATE TEMPORARY TABLE t1 (select * from t2);
 56
Author: rizon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-21 07:10:53

Silnik musi być przed wyborem:

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY 
as (select * from table1)
 53
Author: Crusader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-14 14:02:25

ENGINE=MEMORY nie jest obsługiwana, gdy tabela zawiera BLOB/TEXT kolumny

 33
Author: Cris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-21 07:11:55