插入声明问题

时间:2012-02-14 10:14:53

标签: sql sql-server database oracle insert

我正在使用声明

insert into foo select bar from foobar

它运作良好。

然后,有一天,我改为:

insert into foo(bar) select bar from foobar

现在它不起作用。

第二个陈述怎么了?

我想知道这些事情,所以我可以决定将来是否必须小心。

修改

现在很清楚了。我想知道MSSQL和Oracle的语法是否不同。请帮忙

2 个答案:

答案 0 :(得分:3)

您有两种可能的语法选择:

insert into foo
    select bar from foobar


insert into foo (column_name_of_foo)
    values (select bar from foobar)

如果你的foo表不是一个bar列,那么你的第二个语法就会出错,因为你在列中想要插入一些东西。

使用第一种语法,您没有命名要插入的列。

答案 1 :(得分:2)

在第二个语句(insert into table (column))中使用语法时,您需要添加values关键字,并且值本身必须用括号括起来:

insert into foo (bar[, bar2]) values (select bar[, bar2] from foobar)