左连接右表中的重复键

时间:2014-11-25 11:56:41

标签: sql join

我正在尝试合并两个表格如下

 SELECT * FROM T1 
 LEFT JOIN T2 ON T1.EMPnum = T2.EMPnum

以上工作正常,但我需要加入才能使用表T2中的公共密钥EMPnum记录的第一次出现,以便查询返回完全与T1相同的行数

谢谢Avi

1 个答案:

答案 0 :(得分:1)

SQL表本质上是无序的,所以没有“第一”键这样的东西。在大多数数据库中,您可以执行以下操作:

with t2 as (
      select t2.*, row_number() over (partition by EMPnum order by id) as seqnum
      from t2
     )
select *
from t1 left join
     t2
     on t1.EMPnum = t2.EMPnum and t2.seqnum = 1;

此处id只是指定排序的任何列。如果不存在,您可以使用EMPnum获取任意行。