将表中的所有行与其他表中的第一个匹配行连接起来[重复]
Posted
技术标签:
【中文标题】将表中的所有行与其他表中的第一个匹配行连接起来[重复]【英文标题】:Join all rows in table with first matched row in other table [duplicate] 【发布时间】:2014-11-05 04:07:47 【问题描述】:我有 2 个表,我想要 table1 left join table2
,想法是显示所有 table1 的行,对于每个 table1 的行,我搜索所有 table2 中的记录,直到第一个匹配值。
所以results' row number = talbe1's row number
,只需添加table2 的第一个匹配值,但这里我得到results' row number > talbe1's row number
【问题讨论】:
这个问题在 SO 上被回答了很多次。查找每个组最大 n 和 sql-server 的问题。使用ROW_NUMBER()
寻找解决方案
为什么用 sql-server 标记?
【参考方案1】:
这取决于您的表结构以及您如何加入它们。我可以想到一个例子,结果的行号>表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 姓名 S_ID
1 彼得 11 彼得 22 莎莉 3
【讨论】:
1 彼得 1 尺子 2 莎莉 3 铅笔 请问这个怎么弄? 你可以试试sqlfiddle.com以上是关于将表中的所有行与其他表中的第一个匹配行连接起来[重复]的主要内容,如果未能解决你的问题,请参考以下文章