【发布时间】:2012-11-08 15:21:11
【问题描述】:
我有三个具有相同列的表,我需要将它们合并到一个表中。一些 ID 出现在多个表中,我需要首先使用编号最小的表中的 ID,并在任何后续表中忽略该 ID。注意只有ID相同,表之间没有重复行。
所以举个例子,这三个表需要转化为最终表:
**Table 1**
+----+----+----+
| ID | C1 | C2 |
+----+----+----+
| 01 | AA | BB |
| 02 | CC | DD |
| 03 | EE | FF |
+----+----+----+
**Table 2**
+----+----+----+
| ID | C1 | C2 |
+----+----+----+
| 03 | GG | HH |
| 04 | II | JJ |
| 05 | KK | LL |
+----+----+----+
**Table 3**
+----+----+----+
| ID | C1 | C2 |
+----+----+----+
| 01 | MM | NN |
| 04 | OO | PP |
| 06 | QQ | RR |
+----+----+----+
**Resulting Table**
+----+----+----+
| ID | C1 | C2 |
+----+----+----+
| 01 | AA | BB |
| 02 | CC | DD |
| 03 | EE | FF |
| 04 | II | JJ |
| 05 | KK | LL |
| 06 | QQ | RR |
+----+----+----+
我对使用左连接和“IS NULL”条件的解决方案有一个模糊的想法,但这可能会很快变得复杂,尤其是在表数量增加的情况下。
有没有办法只在一列上指定重复项,而不是在整行上?
【问题讨论】:
-
您使用的是什么 DBMS?
-
Access 中的 T-SQL。我想解决问题的另一种方式是我想要所有表 1,然后只需要表 2 中其 ID 不存在于表 1 中的行,然后只有表 3 中其 ID 不存在的行见表 1 和表 2。
-
哎呀,在看到你在Access中做之前我写了答案......我会重写它......
标签: sql ms-access duplicates union