【发布时间】:2016-01-11 11:01:31
【问题描述】:
我有两张桌子,source 和 target。
source:
+--------+------+-------------+
| Name | Year | City |
+--------+------+-------------+
| Toyota | 2002 | Los Angeles |
| Seat | 2012 | Madrid |
+--------+------+-------------+
target:
+----+---------+------+----------+
| ID | Name | Year | City |
+----+---------+------+----------+
| 1 | Bentley | 1969 | Budapest |
| 2 | Toyota | 1988 | New York |
| 3 | Ford | 2001 | Tokyo |
| 4 | Seat | 1995 | Madrid |
| 5 | Bugatti | 1995 | London |
+----+---------+------+----------+
我想将source 合并到target。我知道MERGE 命令,没关系。问题是source 没有ID 列,因此它不会匹配。
由于两者中的Name 列都是唯一的,我只需要匹配它们是否相等,如果不存在则插入目标,如果存在则更新目标。
我可以使用 NOT EXIST 语句来完成,但我们谈论的是数十亿行,所以 MERGE 将是一个更快的解决方案。
那么我可以以某种方式将MERGE 命令设置为在匹配时仅考虑该列吗?
【问题讨论】:
标签: sql sql-server merge