我正在使用SQL Server 2005,我希望同步两个具有相同定义但存在于不同数据库中的表。 MERGE INTO仅存在于2008年,我更喜欢一种语法,我不必在UPDATE中指定列。所以我使用以下语法偶然发现了various posts:
UPDATE Destination FROM (Source INTERSECT Destination)
INSERT INTO Destination FROM (Source EXCEPT Destination)
但是当我尝试执行它时,我得到了:
Incorrect syntax near the keyword 'FROM'.
我怎样才能使这个工作?我有多个表需要同步,我不想在每个语句中指定所有列。
感谢任何提示!
答案 0 :(得分:0)
如果这不能回答您的问题,我很抱歉,但假设这样做的全部原因是为了节省时间,您不能只是右键单击源表并生成INSERT脚本,然后右键 - 单击目标表并生成一个空白的SELECT脚本,然后合并两个?只有在您的环境中可以接受杀戮和填充时,这才有效。
答案 1 :(得分:0)
根据联机丛书,update
command需要set
关键字,并且必须位于可选的from
关键字之前。 insert
command没有独立from
关键字,from
仅作为派生表源或公用表表达式作为select
语句的一部分存在
您引用的链接未显示有效的SQL Server 2005语法。
“我怎样才能使这个工作?我有多个表需要同步,我不想在每个语句中指定所有列。”
对于update
,您必须指定所有列。对于insert
,如果源和目标具有相同的结构,那么您可以使用不建议用于生产代码的insert into TARGTET_TABLE_NAME select * from SOURCE_TABLE_NAME
但,如果源或目标更改,则声明将打破。如果源和目标不同,则必须在插入的至少一侧指定列。