加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何将此LEFT JOIN返回的行数限制为一个?

发布时间:2020-12-12 08:59:01 所属栏目:MsSql教程 来源:网络整理
导读:所以我认为我已经看到了解决方案,但它们都是非常复杂的查询.我在oracle 11g中作为参考. 我所拥有的是一个简单的一对多联接,但是我不需要那么多.我只是希望左表(一个)只加入满足连接条件的任何1行…不是很多行. 我需要这样做,因为查询是汇总的,因此如果我做正
所以我认为我已经看到了解决方案,但它们都是非常复杂的查询.我在oracle 11g中作为参考.

我所拥有的是一个简单的一对多联接,但是我不需要那么多.我只是希望左表(一个)只加入满足连接条件的任何1行…不是很多行.

我需要这样做,因为查询是汇总的,因此如果我做正常的左连接,我得到5行,我应该得到1.

所以示例数据如下:

TABLE 1:
-------------
TICKET_ID      ASSIGNMENT
5              team1
6              team2

TABLE 2:
-------------
MANAGER_NAME   ASSIGNMENT_GROUP  USER
joe            team1             sally
joe            team1             stephen
joe            team1             louis
harry          team2             ted
harry          team2             thelma

我需要做的是在ASSIGNMENT = ASSIGNMENT_GROUP上加入这两个表,但只返回1行.

当我做左连接时,我得到三行返回beaucse,这是hte left join的本质

解决方法

如果oracle支持行号(分区依据),则可以创建一个子查询,选择行等于1的位置.
SELECT * FROM table1
LEFT JOIN
(SELECT *
FROM   (SELECT *,ROW_NUMBER()
             OVER(PARTITION BY assignmentgroup ORDER BY assignmentgroup) AS Seq
    FROM  table2) a
WHERE  Seq = 1) v
ON assignmet = v.assignmentgroup

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读