2010-06-01 7 views
33

Lorsque je tente d'exécuter la requête suivante:SELECT INTO et "variables non déclarés" erreur

SELECT id_subscriber 
    INTO newsletter_to_send 
    FROM subscribers 

Je reçois une erreur:

#1327 - Undeclared variable: newsletter_to_send

Quel est le problème avec cette requête?

Répondre

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: êtes-vous sûr de ne pas besoin de WHERE article?

+0

fonctionne très bien, merci! – hsz

+2

Pour utiliser insert dans nous devons d'abord créer la table, dans ce cas si la table newsletter_to_send n'existe pas, il y aura erreur! –

+0

@Praveen Kumar: il est évident que vous avez besoin d'un serveur, avec mysql installé et une table créée, n'est-ce pas? – zerkms

18

MySQL ne prend pas en charge la syntaxe SELECT ... INTO .... Pour cela, vous devez utiliser la syntaxe INSERT INTO ... SELECT ...

En savoir plus ici .. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

cela vous dérangerait-il de m'aider avec problème ici s'il vous plaît http: // stackoverflow .com/questions/43987326/conversion-oracle-trigger-en-mysql-trigger – sam

3

serveur MySQL ne supporte pas le SELECT ... INTO TABLE extension Oracle SQL. Au lieu de cela, le serveur MySQL prend en charge la syntaxe SQL standard INSERT INTO ... SELECT, qui est fondamentalement la même chose. See Section 12.2.5.1, «INSERT ... SELECT Syntax».

Ref: - this

8

MySQL ne supporte pas SELECT INTO [table]. Il prend uniquement en charge SELECT INTO [variable] et ne peut faire qu'une seule variable à la fois.

Qu'est-ce que vous pouvez faire, est cependant utiliser la syntaxe CREATE TABLE avec un SELECT comme ceci:

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

Cet exemple est bon et permet à mysql de faire l'équivalent de SELECT ... INTO ... en créant automatiquement une table – ejectamenta

+0

Au moins pour la dernière version de MySQL vous pouvez assigner plusieurs valeurs à plusieurs variables dans une instruction 'SELECT [values] INTO [variables]'. Vérifiez https://dev.mysql.com/doc/refman/5.7/fr/select-into.html –

-3

MySQL ne supporte pas SELECT INTO [table]. Il prend uniquement en charge SELECT INTO [variable] et ne peut faire qu'une seule variable à la fois.

Ce que vous pouvez faire, est cependant utiliser la syntaxe CREATE TABLE avec un SELECT comme ceci:

11

Je pense que vous pouvez suivre mon chemin donné et nous espérons que vous serez en mesure de résoudre votre problème.

À la première utilisation de cette commande SQL pour créer une nouvelle table où vous voulez prendre sauvegarde

CREATE TABLE destination_table_name LIKE source_table_name; 

Une fois que vous pouvez utiliser cette commande pour copier les données

INSERT INTO destination_table_name 
SELECT * FROM source_table_name; 

Si vous avez déjà données précédentes dans votre table de destination, Tout d'abord, vous pouvez utiliser cette commande

TRUNCATE TABLE destination_table_name; 

Merci Par Md.Maruf Hossain

+0

Merci aidez-nous ... –

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

J'ai essayé de travailler sur tout à l'heure et cela fonctionne pour moi:

CREATE TABLE New_Table_name 
SELECT * FROM Original_Table_name; 
+1

le "Nouveau ~ est un peu trompeur et devrait être omis –

0

MySQL ne supporte pas SELECT ... INTO ... syntaxe,

si elle est une nouvelle table, utilise CREATE TABLE ... SELECT ... syntaxe.

exemple:

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; 

lire la suite ici create-table-select

Questions connexes