sql – 在merge语句中使用join
问题
表格1: | KeyColumn | DataColumn1 | DataColumn2| 01 0.1 0.2 02 0.13 0.41 表2: | anotherKey | DataColumn1 | DataColumn2| A1 .15 1.2 A2 .25 23.1 表3: |KeyColumn| anotherKey | 01 A1 02 A1 给定一个键(A1或A2),我需要用表2中的相应值来更新表1中的DataColumn1和DataColumn2列. 所以table1可以更新X行数,如上面的数据所示.如果要更新A1,则应更新01和02行 (因此,对于datacolumn1,表1中的值为0.15,对于01和02键,datacolumn2的值为1.2) 到目前为止我已经尝试过 MERGE table1 USING (SELECT * FROM table2 LEFT OUTER JOIN table3 on table2.anotherKey = table3.anotherKey WHERE table2.anotherKey = 'A1') tmpTable ON table1.keyColumn = tmpTable.keyColumn WHEN MATCHED THEN UPDATE SET table1.DataColumn1 = tmpTable.DataColumn1,table1.DataColumn2 = tmpTable.DataColumn2; 问题: 这是否允许?要在using语句中使用select?我在第1行出现语法错误 和错误: 消息102,第15级,状态1,第1行 解决方法您的查询将给出错误Msg 8156,Level 16,State 1,Line 59 The column 'AnotherKey' was specified multiple times for 'tmpTable'. 那是因为你在using子句中使用*,AnotherKey是table2和table3的一部分. MERGE table1 USING (SELECT table3.keycolumn,table2.DataColumn1,table2.DataColumn2 FROM table2 INNER JOIN table3 ON table2.anotherKey = table3.anotherKey WHERE table2.anotherKey = 'A1') tmpTable ON table1.keyColumn = tmpTable.keyColumn WHEN MATCHED THEN UPDATE SET table1.DataColumn1 = tmpTable.DataColumn1,table1.DataColumn2 = tmpTable.DataColumn2; 更新 发布实际错误总是有帮助的. Msg 102,Level 15,Line 1 Incorrect syntax near 'a'. Msg 102,Line 12 Incorrect syntax near 'd'. 看起来你在SQL Server 2005上.合并从SQL Server 2008可以. 您可以使用select @@版本检查您的SQL Server版本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |