2014-11-25 72 views
0

我試圖合併2個表如下左連接有重複鍵在右表

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

上述作品很好,但我需要的加入只使用公共密鑰EMPnum首次亮相在表T2記錄,因此該查詢返回完全相同相同的行數爲T1

由於阿維

+1

您正在使用哪些DBMS? Postgres的?甲骨文? – 2014-11-25 12:01:22

+1

您可以將*更改爲特定的字段列表。例如T1.somefield,T1.someotherfield等... – kevchadders 2014-11-25 12:01:43

+1

什麼是「第一次出現」?只有任何一個匹配的行?或者是否有一些您想要考慮的具體訂單? – 2014-11-25 12:03:51

回答

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來獲取任意行。