web-dev-qa-db-ja.com

SELECT INTOおよび「宣言されていない変数」エラー

次のクエリを実行しようとすると:

SELECT id_subscriber
  INTO newsletter_to_send
  FROM subscribers 

エラーが発生します:

#1327-宣言されていない変数:newsletter_to_send

そのクエリの何が問題になっていますか?

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:WHERE句には必要ないのですか?

46
zerkms

MySQLはSELECT ... INTO ...構文をサポートしていません。

そのためには、INSERT INTO ... SELECT ..構文を使用する必要があります。

詳細はこちらをご覧ください。 http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

21
Raj More

あなたは私の与えられた方法に従うことができ、問題を解決できることを願っています。

最初にこのsqlコマンドを使用して、バックアップを取得する新しいテーブルを作成します

CREATE TABLE destination_table_name LIKE source_table_name;

その後、このコマンドを使用してそれらのデータをコピーできます

INSERT INTO destination_table_name
SELECT * FROM source_table_name;

Destinationテーブルに以前のデータが既にある場合、まずこのコマンドを使用できます

TRUNCATE TABLE destination_table_name; 

Md。Maruf Hossainによる感謝

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

MySQLはSELECT INTO [table]をサポートしていません。 SELECT INTO [variable] のみをサポートし、一度に1つの変数しか実行できません。

ただし、canが行うことは、 CREATE TABLE 構文とSELECT そのようです:

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

私は今これに取り組んでみましたが、これは私のために働いています:

CREATE TABLE New_Table_name
SELECT * FROM Original_Table_name;
5
user2365440

MySQL Serverは、Sybase SQL拡張機能のSELECT ... INTO TABLEをサポートしていません。代わりに、MySQLサーバーはINSERT INTO ... SELECT標準SQL構文をサポートしますが、これは基本的に同じものです。セクション12.2.5.1「INSERT ... SELECT構文」を参照してください。

参照:- this

4
Salil

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

2
Dl Li