2010-06-01 10 views
33

Wenn ich versuche, folgende Abfrage ausführen:SELECT INTO und "Nicht deklarierte Variable" Fehler

SELECT id_subscriber 
    INTO newsletter_to_send 
    FROM subscribers 

Ich erhalte eine Fehlermeldung:

#1327 - Undeclared variable: newsletter_to_send

Was ist mit dieser Abfrage ist falsch?

Antwort

39
INSERT ... SELECT 

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

INSERT INTO newsletter_to_send 
SELECT id_subscriber FROM subscribers 

PS: Sind Sie sicher, dass Sie in WHERE Klausel nicht brauchen?

+0

funktioniert gut, danke! – hsz

+2

Für die Verwendung einfügen in müssen wir zuerst die Tabelle erstellen, in diesem Fall, wenn die Tabelle newsletter_to_send nicht existiert, wird ein Fehler auftreten! –

+0

@Praveen Kumar: Es ist offensichtlich, dass Sie einen Server benötigen, mit MySQL installiert und Tabelle erstellt, nicht wahr? – zerkms

18

MySQL unterstützt die SELECT ... INTO ... Syntax nicht.

Sie müssen die INSERT INTO ... SELECT .. Syntax verwenden, um dort zu erreichen.

Lesen Sie mehr hier .. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

würde es Ihnen etwas ausmachen, mir mit dem Problem hier bitte http: // stackoverflow .com/questions/43987326/converting-oracle-trigger-to-mysql-trigger – sam

3

MySQL Server unterstützt nicht die SELECT ... INTO TABLE Sybase SQL-Erweiterung. Stattdessen unterstützt MySQL Server die INSERT INTO ... SELECT-Standard-SQL-Syntax, was im Grunde dasselbe ist. Siehe Abschnitt 12.2.5.1, "INSERT ... SELECT Syntax".

Ref: - this

8

MySQL nicht SELECT INTO [table] unterstützen. Es unterstützt nur SELECT INTO [variable] und kann immer nur eine Variable gleichzeitig ausführen.

Was Sie können tun, jedoch ist verwenden, um die CREATE TABLE Syntax mit einem SELECT etwa so:

CREATE TABLE bar ([column list]) SELECT * FROM foo; 
+0

Dieses Beispiel ist gut und erlaubt mysql das Äquivalent von SELECT ... INTO ... durch automatisches Erstellen einer Tabelle – ejectamenta

+0

zumindest für die neuesten Version von MySQL können Sie mehreren Variablen in einer 'SELECT [values] INTO [variables]' Anweisung mehrere Werte zuweisen. Überprüfen Sie https://dev.mysql.com/doc/refman/5.7/en/select-into.html –

-3

MySQL nicht SELECT INTO [table] unterstützen. Es unterstützt nur SELECT INTO [variable] und kann nur eine Variable gleichzeitig ausführen.

Was Sie tun können, ist jedoch verwenden, um die CREATE TABLE Syntax mit einem SELECT wie so:

11

Ich glaube, Sie meinen gewichen folgen können und hoffentlich werden Sie in der Lage sein, Ihr Problem zu beheben.

Beim ersten Gebrauch dieser SQL-Befehl eine neue Tabelle zu erstellen, in dem Sie

sichern möchten
CREATE TABLE destination_table_name LIKE source_table_name; 

nehmen Nachdem dann können Sie diesen Befehl verwenden, um diese Daten

INSERT INTO destination_table_name 
SELECT * FROM source_table_name; 

Wenn Sie bereits kopiert haben vorherige Daten in Ihrer Zieltabelle, Zuerst können Sie diesen Befehl verwenden

TRUNCATE TABLE destination_table_name; 

Danke von Md.Maruf Hossain

+0

Danke, es hilft ... –

8
CREATE TABLE table_name 
AS 
SELECT ...(your select)
3

Ich habe versucht, auf diese Arbeit gerade jetzt und das funktioniert für mich:

CREATE TABLE New_Table_name 
SELECT * FROM Original_Table_name; 
+1

die "New ~ ist etwas irreführend und sollte weggelassen werden –

0

MySQL unterstützen nicht SELECT ... INTO ... Syntax,

wenn es eine neue Tabelle verwenden Sie CREATE TABLE ... SELECT ... Syntax.

Beispiel:

CREATE TABLE artists_and_works 
    SELECT artist.name, COUNT(work.artist_id) AS number_of_works 
    FROM artist LEFT JOIN work ON artist.id = work.artist_id 
    GROUP BY artist.id; 

mehr hier lesen create-table-select

Verwandte Themen