带有现有记录的INSERT语句

时间:2011-02-25 00:24:58

标签: sql sql-server-2005

我想知道是否可以使用已存在的记录执行insert语句。例如:

insert into tbl(item_name, item_price) values(select item_name, item_price from tbl where id = 5)

说id是一个自动递增的pk。

当我尝试类似的东西时,我遇到了错误:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

我错过了什么,或者这是不可能的?

3 个答案:

答案 0 :(得分:6)

查看此文章:Adding Rows by Using INSERT and SELECT

无论如何,正确的方法如下:

insert into tbl(item_name, item_price) 
select item_name, item_price 
  from tbl 
 where id = 5

答案 1 :(得分:3)

试试这个:

insert into tbl(item_name, item_price) select item_name, item_price from tbl where id = 5

答案 2 :(得分:0)

在MySQL中可以使用子查询,但如果你这样做,那么你的数据库可能没有正确规范化,设计变更将是你最好的举动。

以下是子查询的语法:http://dev.mysql.com/doc/refman/5.0/en/subqueries.html