【发布时间】:2015-09-11 18:27:56
【问题描述】:
我正在寻找......没有更好的词,“独占连接”。我只希望右侧的 1 行与左侧的一行匹配,并且不能连接到前一行。解决方案应该适用于 MS SQL 2012。
示例:我有两个表 A 和 B,每个表有 10 行。 A1 行匹配 B3 和 B5,A3 行匹配 B3 和 B5。结果集应包括 2 行:A1 连接到 B3(因为它是右侧的第一个匹配),以及 A3 连接到 B5(因为它是右侧的第一个尚未使用的匹配)。
显然,我试图避免使用游标。也许递归 CTE 是解决此问题的唯一其他方法?
【问题讨论】:
-
没有显示表结构和到目前为止您尝试过的查询..很难回答。
-
为了帮助您,我们至少需要表的架构和两个表之间的 FK 关系。
-
查看左右连接的工作原理。
-
我认为
cross join可以做到这一点,无需加入专栏。看我的回答。
标签: sql sql-server select join