web-dev-qa-db-fra.com

SELECT INTO et erreur "variable non déclarée"

Lorsque j'essaie d'exécuter la requête suivante:

SELECT id_subscriber
  INTO newsletter_to_send
  FROM subscribers 

Je reçois une erreur:

# 1327 - Variable non déclarée: newsletter_to_send

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

39
hsz
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 que vous n'avez pas besoin de la clause WHERE?

46
zerkms

MySQL ne prend pas en charge le SELECT ... INTO ... syntaxe.

Vous devez utiliser le INSERT INTO ... SELECT .. syntaxe à accomplir là-bas.

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

21
Raj More

Je pense que vous pouvez suivre ma voie et j'espère que vous pourrez résoudre votre problème.

Au début, utilisez cette commande sql pour créer une nouvelle table où vous souhaitez effectuer la sauvegarde

CREATE TABLE destination_table_name LIKE source_table_name;

Ensuite, vous pouvez utiliser cette commande pour copier ces données

INSERT INTO destination_table_name
SELECT * FROM source_table_name;

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

TRUNCATE TABLE destination_table_name; 

Merci par Md. Maruf Hossain

16
Md. Maruf Hossain
CREATE TABLE table_name
AS  
SELECT ...(your select)
11
Fabiano Shark

MySQL ne prend pas en charge SELECT INTO [table]. Il prend uniquement en charge SELECT INTO [variable] et ne peut faire que cette variable à la fois.

Ce que vous pouvez faire, cependant, utilisez le CREATE TABLE syntaxe avec un SELECT comme ceci:

CREATE TABLE bar ([column list]) SELECT * FROM foo;
9
amphetamachine

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

CREATE TABLE New_Table_name
SELECT * FROM Original_Table_name;
5
user2365440

MySQL Server ne prend pas en charge l'extension SELECT ... INTO TABLE Sybase SQL. Au lieu de cela, MySQL Server prend en charge la syntaxe SQL standard INSERT INTO ... SELECT, qui est fondamentalement la même chose. Voir Section 12.2.5.1, "INSERT ... SELECT Syntax".

Réf: - this

4
Salil

mysql ne prend pas en charge la syntaxe SELECT ... INTO ...,

s'il s'agit d'une nouvelle table, utilisez la syntaxe CREATE TABLE ... SELECT ....

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;

en savoir plus ici create-table-select

2
Dl Li