我有2個表,我想要table1 left join table2
,想法是顯示所有table1的行,並且對於每個table1的行,我搜索所有table2中的記錄,直到第一個匹配的值。加入表中第一個匹配的行中的所有行
所以results' row number = talbe1's row number
,只需添加表2的第一個匹配的值,但在這裏我得到results' row number > talbe1's row number
我有2個表,我想要table1 left join table2
,想法是顯示所有table1的行,並且對於每個table1的行,我搜索所有table2中的記錄,直到第一個匹配的值。加入表中第一個匹配的行中的所有行
所以results' row number = talbe1's row number
,只需添加表2的第一個匹配的值,但在這裏我得到results' row number > talbe1's row number
這取決於你的表結構以及如何加入他們的行列。我可以想到一個例子,結果的行號>表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
彼得1統治者 2莎莉3鉛筆如何得到這個請嗎? – user3797283 2014-09-11 10:10:50
你可以試試http://sqlfiddle.com/ – Samuel 2014-09-12 06:24:58
這個問題是對SO回答了很多次。用最大的每個組和最多的sql服務器來查找問題。用'ROW_NUMBER()'尋找解決方案' – Bulat 2014-09-11 09:34:16
爲什麼這是用sql-server標記的? – Tanner 2014-09-11 09:37:27