加入表中第一个匹配的行中的所有行

问题描述:

我有2个表,我想要table1 left join table2,想法是显示所有table1的行,并且对于每个table1的行,我搜索所有table2中的记录,直到第一个匹配的值。加入表中第一个匹配的行中的所有行

所以results' row number = talbe1's row number,只需添加表2的第一个匹配的值,但在这里我得到results' row number > talbe1's row number

+0

这个问题是对SO回答了很多次。用最大的每个组和最多的sql服务器来查找问题。用'ROW_NUMBER()'寻找解决方案' – Bulat 2014-09-11 09:34:16

+0

为什么这是用sql-server标记的? – Tanner 2014-09-11 09:37:27

这取决于你的表结构以及如何加入他们的行列。我可以想到一个例子,结果的行号>表1行号。

create table staff (
    staff_id int, 
    name varchar(100) 
) 
; 
create table stationery (

    s_id int, 
    name varchar(100), 
    staff_id int 
) 
; 
insert into staff values (1, 'Peter'); 
insert into staff values (2, 'Sally'); 

insert into stationery values (1, 'ruler', 1); 
insert into stationery values (2, 'pencil', 1); 
insert into stationery values (3, 'pencil', 2); 

select * 
from staff s1 
left join stationery s2 on s1.staff_id = s2.staff_id ; 

STAFF_ID NAME S_ID


彼得前书1
彼得前书2
2仙3

+0

彼得1统治者 2莎莉3铅笔如何得到这个请吗? – user3797283 2014-09-11 10:10:50

+0

你可以试试http://sqlfiddle.com/ – Samuel 2014-09-12 06:24:58