SELECT INTO и ошибка необъявленной переменной

Когда я пытаюсь выполнить следующий запрос:

SELECT id_subscriber
  INTO newsletter_to_send
  FROM subscribers 

Я получаю сообщение об ошибке:

#1327 – Необъявленная переменная: информационный бюллетень_to_send

Что не так с этим запросом?


person hsz    schedule 01.06.2010    source источник


Ответы (11)


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: вы уверены, что вам не нужен пункт WHERE?

person zerkms    schedule 01.06.2010
comment
Для использования вставки в нам нужно сначала создать таблицу, в этом случае, если таблица letter_to_send не существует, будет ошибка! - person Praveen Kumar; 28.07.2014
comment
@Praveen Kumar: очевидно, что вам нужен сервер с установленным mysql и созданной таблицей, не так ли? - person zerkms; 28.07.2014
comment
На самом деле, я упомянул об этом даже больше, потому что для select ...into будет создана синтаксическая таблица, если она не существует, а вот для вставки в нее это не так. - person Praveen Kumar; 28.07.2014
comment
@Praveen Kumar: синтаксис select ...into --- есть ссылки в документации? Я не знаю такого синтаксиса. - person zerkms; 28.07.2014
comment
не могли бы вы помочь мне с проблемой здесь, пожалуйста stackoverflow.com/questions/43987326/ - person sam; 16.05.2017
comment
@zerkms Я считаю, что select ...into предназначен для SQL Server, а не для MySQL. См. https://stackoverflow.com/questions/16683758/. - person Paul Chris Jones; 20.12.2018

MySQL не поддерживает синтаксис SELECT ... INTO ....

Вы должны использовать синтаксис INSERT INTO ... SELECT .. для этого.

Подробнее читайте здесь.. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

person Raj More    schedule 01.06.2010
comment
не могли бы вы помочь мне с проблемой здесь, пожалуйста stackoverflow.com/questions/43987326/ - person sam; 16.05.2017

Я думаю, вы можете следовать моему указанному пути, и, надеюсь, вы сможете решить свою проблему.

Сначала используйте эту команду sql, чтобы создать новую таблицу, в которой вы хотите сделать резервную копию.

CREATE TABLE destination_table_name LIKE source_table_name;

После этого вы можете использовать эту команду для копирования этих данных

INSERT INTO destination_table_name
SELECT * FROM source_table_name;

Если у вас уже есть предыдущие данные в таблице назначения, сначала вы можете использовать эту команду

TRUNCATE TABLE destination_table_name; 

Спасибо г-н Маруф Хоссейн

person Md. Maruf Hossain    schedule 17.07.2012

MySQL не поддерживает SELECT INTO [table]. Он поддерживает только SELECT INTO [variable] и может делать только это по одной переменной за раз.

Что вы можете сделать, так это использовать CREATE TABLE синтаксис с SELECT выглядит следующим образом:

CREATE TABLE bar ([column list]) SELECT * FROM foo;
person amphetamachine    schedule 01.06.2010
comment
Этот пример хорош и позволяет mysql сделать эквивалент SELECT... INTO... путем автоматического создания таблицы - person ejectamenta; 06.02.2015
comment
По крайней мере, для последней версии MySQL вы можете присваивать несколько значений нескольким переменным в одном выражении SELECT [values] INTO [variables]. Проверьте dev.mysql.com/doc/refman/5.7/en /select-into.html - person Gusstavv Gil; 16.08.2017

Я пытался работать над этим только сейчас, и это работает для меня:

CREATE TABLE New_Table_name
SELECT * FROM Original_Table_name;
person user2365440    schedule 09.05.2013
comment
New~ немного вводит в заблуждение и его следует опустить. - person Hayden Thring; 21.06.2017

MySQL Server не поддерживает расширение Sybase SQL SELECT ... INTO TABLE. Вместо этого MySQL Server поддерживает стандартный синтаксис SQL INSERT INTO... SELECT, который в основном является одним и тем же. См. Раздел 12.2.5.1, «Синтаксис INSERT ... SELECT».

Ссылка: - это

person Salil    schedule 01.06.2010

mysql не поддерживает синтаксис SELECT... INTO...,

если это новая таблица, используйте синтаксис CREATE TABLE... SELECT....

пример:

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;

подробнее здесь create-table-select

person Dl Li    schedule 01.02.2018

Если вы хотите создать новую таблицу как дублирующую таблицу.

CREATE TABLE WorkerClone LIKE Worker;   //only structure will show no data
CREATE TABLE WorkerClone Select * from  Worker; //DUPLICATE table created with all details.
person Prakash Singh    schedule 24.11.2019

Вы можете сделать это без CREATE TABLE + INSERT INTO + DROP TABLE Вот так:

SELECT @newsletter_to_send := id_subscriber
FROM subscribers WHERE your_condition = your_value;
person MTK    schedule 11.07.2021

MySQL не поддерживает SELECT INTO [table]. Он поддерживает только SELECT INTO [variable] и может выполнять эту переменную только по одной за раз.

Однако вы можете использовать синтаксис CREATE TABLE с SELECT следующим образом:

person siddu    schedule 23.12.2011

person    schedule
comment
ну... так лучше, особенно если вы не знаете (или не хотите писать) названия всех столбцов - person salvob; 01.11.2018