【发布时间】:2018-12-06 23:34:08
【问题描述】:
TableA
------
IntId EvId Name Phone1
===== ==== ==== ======
100 aaa xxx 11111
101 bbb yyy 22222
102 ccc zzz 33333
103 bbb asd 44444
104 bbb sdf 55555
TableB
------
IntId ASId Grp Phone2
===== ==== ==== ======
201 bbb yyy 6666
202 ccc zzz 7777
203 bbb asd 8888
204 bbb kkf 9999
205 ddd esd 0000
206 eee ffr 1001
我想使用 TableA.EvId = TableB.ASId 将 TableA 与 TableB 连接起来以输出 {IndId, EvId, Name, Phone1, Grp, Phone2}(使用外连接,因为我希望 TableA 中的所有记录都具有匹配的 TableB 列)
我可以使用下面的查询来做到这一点,但它给了我重复,因为 EvId 和 ASId 有重复。
SELECT a.IntId, a.EvId, a.Name, a.Phone1, b.Grp, b.Phone2
FROM TableA a
LEFT OUTER JOIN TableB b
ON a.EvId = b.ASId
如果 EvId 重复,请考虑具有最大 IntId 的记录。 TableB 的规则相同
我的最终输出应该是这样的 - TableA 中所有唯一的 EvId 都使用 B 上的外连接
IntId EvId Name Phone1 Phone2 Grp
100 aaa xxx 11111 null null
104 bbb sdf 55555 9999 kkf
102 ccc zzz 33333 7777 zzz
你能帮我查询一下吗?
【问题讨论】:
-
首先编写两个查询,根据您的规则使它们独一无二。然后加入这两个子表。使它们唯一的查询取决于数据库服务器的类型。请编辑问题并添加数据库服务器类型的标签。 MySQL? SQL 服务器?甲骨文? Postgres?
标签: sql