2014-09-11 51 views
-2

我有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

回答

0

這取決於你的表結構以及如何加入他們的行列。我可以想到一個例子,結果的行號>表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

相關問題