如何从一个表插入一行到另一个表(列数较少)?

时间:2010-05-31 23:38:31

标签: sql sql-server sql-server-2005

修改

好的,我解决了所有问题但一个问题。是否也可以使用硬编码值插入。就像我说的那样,我试图将一行(其中一些列)插入到另一个表中,该表具有大约80%的相同列,但其余的是非空非列,需要将一些值插入其中。

我想知道我可以发送硬编码值,还是应该让它们可以为空?

您好

我正在尝试查找不在一个表中的行并将它们插入另一个表中。我试图插入的表比另一个列的列少。

这些列是null,但如果我可以在插入之前对值进行硬编码,那将会很酷。

但是我试图让它插入时遇到了很多麻烦。

我有类似的东西

SELECT p.ProductId, p.ProductName
INTO SomeTable
FROM Product as p
WHERE p.ProductName != 'iPad'

虽然

我会收到这样的错误
  

Msg 4104,Level 16,State 1,Line 1   多部分标识符   “p.ProductId”无法受约束。

我不确定我做错了什么。我复制并粘贴了名字,所以我不认为这是拼写错误。

我正在使用ms sql 2005 express。

修改

我忘了用别名来更新我的where子句,这就是我收到此错误的原因。现在我收到一个新错误

  

已经有一个名为的对象   数据库中的'SomeTable'。

我的where子句。

SELECT p.ProductId, p.ProductName
INTO SomeTable
FROM Product as p
WHERE NOT EXISTS (SELECT * FROM SomeTable WHERE p.ProductId = SomeTable.ProductId)

1 个答案:

答案 0 :(得分:5)

语法应该是这样的:

INSERT INTO table (f1, f2)
SELECT a, b
FROM table2
WHERE somefield = 'some_value'