我有一个表,叫做table1(id, col2, col3)
,我想复制所有id 1
的数据,但是用不同的id
来代替,比如说11
(id
不是自动生成的列)。我写了以下的SQL查询语句,但是它对我不起作用(会出现语法错误):
INSERT INTO table1(
id,
col2,
col3
)
VALUES (
SELECT 11 , col2, col3
FROM table1 WHERE id=1
)
我有一个表,叫做table1(id, col2, col3)
,我想复制所有id 1
的数据,但是用不同的id
来代替,比如说11
(id
不是自动生成的列)。我写了以下的SQL查询语句,但是它对我不起作用(会出现语法错误):
INSERT INTO table1(
id,
col2,
col3
)
VALUES (
SELECT 11 , col2, col3
FROM table1 WHERE id=1
)
不要使用"VALUES"关键字
INSERT INTO table1(
id,
col2,
col3
)
SELECT 11 , col2, col3
FROM table1
WHERE id = 1
编辑:
检查你是否使用正确的列名:
DESC table1;
select 11, col2, col3 from table1
会发生什么? - Raphaël AlthausDESC table1
是什么意思? - Raphaël Althaus试试这个:
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
使用带有WHERE id = 1
的INSERT INTO ... SELECT
:
INSERT INTO table1(id, col2, col3)
SELECT '1' + id , col2, col3
FROM table1
WHERE id = 1
INSERT
只能使用 VALUES
或 SELECT
,不能同时使用。
INSERT INTO table1( id, col2, col3 )
SELECT 11 , col2, col3
FROM table1
WHERE id = 1