2016-12-02 3 views
0

Ich versuche, eine temporäre Tabelle zu erstellen, in dem es zwei Felder hat (Benutzer, übergeben), dieShop verschiedene Felder aus verschiedenen Tabellen in eine temporäre Tabelle

TABLES

agents 
username | password 

clients 
username | password 

admin 
username | password 
eine Kombination aus drei Tischen war

i wollen, dass ihre Daten von ihren Feldern in eine temporäre Tabelle

TEMPORARY TABLE

gespeichert werden
temp_tbl 
username | password 

Dies ist meine MySQL-Abfrage (Ich weiß, das eine falsche Syntax)

CREATE TEMPORARY TABLE temp_tbl ENGINE=MEMORY 
AS (SELECT username,password FROM agents UNION SELECT username,password FROM clients UNION SELECT username,password FROM admin) AS col1, col2; 

Antwort

1

Ziemlich nahe

CREATE TEMPORARY TABLE temp_tbl ENGINE=MEMORY 
AS SELECT * FROM 
(SELECT username,password FROM agents 
UNION SELECT username,password FROM clients 
UNION SELECT username,password FROM admin) AS t1; 

Sie haben die drei Gewerkschaften in einem anderen SELECT wickeln, und Sie müssen, dass abgeleitete Tabelle einen Aliasnamen geben. Nur ein Name bitte nicht zwei (t1 statt col1, col2)

Wenn Sie das Ganze um eine andere Abfrage wickeln, wie ich getan habe, erhalten Sie einen Syntaxfehler.

2

Ihre Abfrage wie unten eher aussehen sollte. Pro MySQL-Dokumentation können Sie CTAS Konstrukt für die Erstellung temporary Tabelle auch verwenden.

CREATE TEMPORARY TABLE temp_tbl 
AS (SELECT username, password FROM agents 
UNION 
SELECT username, password FROM clients 
UNION 
SELECT username, password FROM admin); 
+0

@topic Starter können Sie, was zu verwenden "UNION ALL", um Duplikate zu halten –

1
CREATE VIEW all_user AS 
    SELECT * FROM agents 
    UNION ALL 
    SELECT * FROM clients 
    UNION ALL 
    SELECT * FROM admin 
Verwandte Themen