Ran*_*jit 1 sql t-sql sql-server sql-server-2005
这些陈述有效吗?
UPDATE Table1
FROM (SELECT * FROM Table2)
INSERT INTO Table1
(SELECT * FROM Table2)
Run Code Online (Sandbox Code Playgroud)
您的更新语句需要为要更新的每个字段设置一个Set,所以不需要.正确的语法:
UPDATE table1
SET table1.field1=table2.field1, table1.field2=table2.field2
FROM table1
INNER JOIN table2 ON table1.keyfield = table2.keyfield
Run Code Online (Sandbox Code Playgroud)
如果Table1和Table2具有相同顺序的相同列,则insert语句将起作用.
编辑: 如果您正在寻找更新/插入(Upsert)的示例,请查看此博客文章(适用于SQL 2008 - 不确定2005年,但对此表示怀疑).
另一个选项是Update,然后是插入.此博客文章的示例:
UPDATE CustomersA
SET CustomerName = B.CustomerName
FROM CustomersA A (NoLock)
INNER JOIN CustomersB B (NoLock) ON A.CustomerId = B.CustomerId
And later run the Insert command
INSERT INTO CustomersA (
CustomerId,
CustomerName
)
SELECT
Id,
Name
FROM CustomersB (NoLock)
WHERE
Id NOT IN (
SELECT CustomerId FROM CustomersA (NoLock)
)
Run Code Online (Sandbox Code Playgroud)