1

我正在使用 SQL Server 2005,我想同步两个具有相同定义但存在于不同数据库中的表。MERGE INTO 仅存在于 2008 年,我更喜欢不必在 UPDATE 中指定列的语法。所以我偶然发现了使用以下语法的各种帖子:

UPDATE Destination FROM (Source INTERSECT Destination)
INSERT INTO Destination FROM (Source EXCEPT Destination)

但是当我尝试执行它时,我得到:

Incorrect syntax near the keyword 'FROM'.

我怎样才能得到这个工作?我有多个需要同步的表,我不想在每个语句中指定所有列。

感谢您的任何提示!

4

2 回答 2

0

很抱歉,如果这不能回答您的问题,但假设这样做的全部原因是为了节省时间,您不能只右键单击源表并生成 INSERT 脚本,然后右键单击目标表并生成一个空白的SELECT脚本,然后将两者结合起来?这仅在您的环境中可接受的杀戮和填充时才有效。

于 2010-10-11T16:40:58.633 回答
0

根据联机丛书,该update命令需要set关键字,并且必须位于可选from关键字之前。该insert命令没有独立的from关键字,from仅作为select语句的一部分作为派生表源或在公共表表达式中存在。

您引用的链接未显示有效的 SQL Server 2005 语法。

“我怎样才能让它工作?我有多个需要同步的表,我不想在每个语句中指定所有列。”

对于update,您必须指定所有列。因为insert如果源和目标具有相同的结构,那么您可以使用不推荐用于生产代码的insert into TARGTET_TABLE_NAME select * from SOURCE_TABLE_NAME BUT,如果源或目标发生更改,则语句将中断。如果源和目标不同,那么您必须在插入的至少一侧指定列。

于 2010-10-11T17:49:24.770 回答