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

所以我认为我已经看到了解决方案,但它们都是非常复杂的查询.我在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

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。