Is het mogelijk om een tijdelijke (alleen sessie) -tabel te maken van een geselecteerde verklaring zonder een CREATE Tabelverklaring te gebruiken en elk kolomtype op te geven? Ik weet dat de afgeleide tabellen hiervoor in staat zijn, maar die zijn super-tijdelijk (alleen verklaring) en ik wil opnieuw gebruiken.
Het zou tijd besparen als ik geen opdracht voor het maken van een CREATE hoefde op te schrijven en de kolomlijst en typelijst overeenkwam.
Antwoord 1, Autoriteit 100%
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
Vanaf de handleiding op http: //dev.mySQL .com / DOC / REFMAN / 5.7 / EN / CREATE-TABLE.HTML
U kunt het tijdelijke sleutelwoord gebruiken bij het maken van een tabel. Een tijdelijke tafel is alleen zichtbaar voor de huidige sessie , en is automatisch gedaald wanneer de sessie is gesloten. Dit betekent dat twee verschillende sessies dezelfde tijdelijke tabelnaam kunnen gebruiken zonder tegenstrijdig met elkaar of met een bestaande niet-tijdelijke tabel met dezelfde naam. (De bestaande tabel is verborgen totdat de tijdelijke tabel is gevallen.) Om tijdelijke tafels te maken, moet u het Privilege Tijdelijke Tafels maken.
Antwoord 2, Autoriteit 17%
Naast psparrow’s antwoord als u een index wilt toevoegen aan uw tijdelijke tabel DOEN:
CREATE TEMPORARY TABLE IF NOT EXISTS
temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
SELECT col_1, coll_2, coll_3
FROM mytable
)
Het werkt ook met PRIMARY KEY
Antwoord 3, Autoriteit 8%
Gebruik deze syntaxis:
CREATE TEMPORARY TABLE t1 (select * from t2);
Antwoord 4, autoriteit 7%
Motor moet vóór selecteren:
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
Antwoord 5, autoriteit 5%
ENGINE=MEMORY
wordt niet ondersteund als de tabel BLOB
/TEXT
kolommen
bevat
Antwoord 6
CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
Antwoord 7
Zoals ik het begrijp, werkt een SELECT-statement op de tijdelijke tabel als je het gebruikt in iets als phpMyAdmin, maar na die SELECT is de tijdelijke tabel verdwenen. Dit betekent dat u eerst precies moet instellen wat u ermee wilt doen, en geen resultaten ziet totdat uw ‘actie’-instructies die de gegevens wijzigen (VERWIJDEREN, UPDATE) zijn voltooid.