加入一对多不同

时间:2013-09-15 22:16:40

标签: sql-server

我想要加入两个表,每个表都有一个唯一的ID。第一个表每个唯一ID有一个记录,第二个表每个唯一ID有许多记录。在连接结果集中,我希望表中有一条记录,每个唯一ID有许多记录。什么记录无关紧要。

一个记录/唯一值

-----------------------
id|other values
1 | blah
2 |blah
3 |blah

mutliple记录/唯一值

-----------------------------
id|code
1 | bv11
1 | bv11
1 | bv11

期望的结果

--------------
id|code
1 | bv11
2 |bv12

3 个答案:

答案 0 :(得分:2)

这是一种方法,您可以从每个tabl获得所需的多个字段:

select u.*, m.code
from Unique u left outer join
     (select m.*, row_number() over (partition by id order by (select NULL)) as seqnum
      from Multiple m
     ) m
     on u.id = m.id and
        m.seqnum = 1;

答案 1 :(得分:0)

我可以想到的最简单的方法是将表1连接到表2的分组,在这里您按ID分组并获取所需的每个其他列的最小值。

这样的东西
select a.id, bx.code from a, (select id, min(code) from b group by id) bx
where a.id = bx.id

答案 2 :(得分:0)

 SELECT TM.id,
        TM.code

 FROM   TABLE_UNIQUE TU



        INNER JOIN TABLE_MULTIPLE TM ON

        TU.id = TM.id


GROUP BY TM.id, TM.code