当我尝试执行以下查询时:
SELECT id_subscriber
INTO newsletter_to_send
FROM subscribers
我收到错误:
#1327 - 未声明的变量:newsletter_to_send
该查询有什么问题?
答案 0 :(得分:45)
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
条款吗?
答案 1 :(得分:21)
MySQL不支持SELECT ... INTO ...
语法。
您必须使用INSERT INTO ... SELECT ..
语法才能完成此任务。
在此处阅读更多内容.. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
答案 2 :(得分:15)
我认为你可以按照我的方式行事,希望你能解决问题。
首先使用此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;
谢谢 Md.Maruf Hossain
答案 3 :(得分:11)
CREATE TABLE table_name
AS
SELECT ...(your select)
答案 4 :(得分:9)
答案 5 :(得分:5)
我刚才尝试过这个,这对我有用:
CREATE TABLE New_Table_name
SELECT * FROM Original_Table_name;
答案 6 :(得分:4)
MySQL Server不支持SELECT ... INTO TABLE Sybase SQL扩展。相反,MySQL Server支持INSERT INTO ... SELECT标准SQL语法,这基本上是一回事。请参见第12.2.5.1节“INSERT ... SELECT语法”。
参考: - this
答案 7 :(得分:2)
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
答案 8 :(得分:0)
你可以不用 CREATE TABLE
+ INSERT INTO
+ DROP TABLE
这样做:
SELECT @newsletter_to_send := id_subscriber
FROM subscribers WHERE your_condition = your_value;
答案 9 :(得分:-1)
如果要将新表创建为重复表。
CREATE TABLE WorkerClone LIKE Worker; //only structure will show no data
CREATE TABLE WorkerClone Select * from Worker; //DUPLICATE table created with all details.
答案 10 :(得分:-2)
MySQL不支持SELECT INTO [table]
。它只支持SELECT INTO [variable]
,并且一次只能执行一个变量。
然而,您可以使用CREATE TABLE
语法与SELECT
一样使用{/ p>}: