MySQL: 在同一表中复制数据的SQL插入查询

6

我有一个表,叫做table1(id, col2, col3),我想复制所有id 1的数据,但是用不同的id来代替,比如说11id不是自动生成的列)。我写了以下的SQL查询语句,但是它对我不起作用(会出现语法错误):

INSERT INTO table1(
id,
col2,
col3
)
VALUES (

SELECT 11 , col2, col3
FROM table1 WHERE id=1
)

这种尝试有什么问题吗?你收到了哪个错误提示? - BugFinder
#1064 - 您在SQL语法上有一个错误,请检查与您的MySQL服务器版本相对应的手册以获取正确的语法。 - gmuhammad
问题是:在使用insert...select时不要放置"VALUES"关键字。 - Raphaël Althaus
已删除VALUES关键字并添加了id条件,但仍无法正常工作。现在出现错误#1054-“字段列表”中的未知列'col2'。 - gmuhammad
4个回答

10

不要使用"VALUES"关键字

INSERT INTO table1(
id,
col2,
col3
)


SELECT 11 , col2, col3
FROM table1
WHERE id = 1

编辑:

检查你是否使用正确的列名:

DESC table1;

+1,唯一提到您需要使用id = 1的where子句才能使其正常工作的人。 - davidethell
已删除VALUES关键字,但仍无法正常工作。现在出现错误#1054-字段列表中的未知列'col2'。 - gmuhammad
@gmuhammad 如果你写了 select 11, col2, col3 from table1 会发生什么? - Raphaël Althaus
出现相同的错误 #1054 - 在“字段列表”中未知列'col2' - gmuhammad
@gmuhammad 那么 DESC table1 是什么意思? - Raphaël Althaus
哦,我明白了。我正在引用另一个具有相同表名但列数不同的数据库。感谢Raphaël Althaus。现在它可以工作了。 - gmuhammad

3

试试这个:

INSERT INTO table1(
id,
col2,
col3
)
SELECT 11 , col2, col3
FROM table1
WHERE table1.id = 1

或者,如果您需要更多类似这样的内容:

INSERT INTO table1(id, col2, col3)
SELECT (SELECT MAX(id) FROM table1) + 1 , col2, col3
FROM table1

2

使用带有WHERE id = 1INSERT INTO ... SELECT

INSERT INTO table1(id, col2, col3)
SELECT '1' + id , col2, col3
FROM table1
WHERE id = 1

2

INSERT 只能使用 VALUESSELECT,不能同时使用。

INSERT INTO table1( id, col2, col3 ) 
SELECT 11 , col2, col3 
FROM table1 
WHERE id = 1 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接