将表中的所有行与其他表中的第一个匹配行连接起来[重复]

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

以上是关于将表中的所有行与其他表中的第一个匹配行连接起来[重复]的主要内容,如果未能解决你的问题,请参考以下文章

UNION JOIN 连接表

将表中的每个字段与同一表中的每个其他字段进行比较

MySQL-表连接

MySQL内连接(INNER JOIN)

MySQL 高级查询

如何将表中的每一行与所有行进行比较?