小编典典

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

sql

所以我想我已经看到了解决方案,但是它们都是非常复杂的查询。我在oracle 11g中供参考。

我拥有的是简单的一对多连接,效果很好,但是我不需要很多。我只希望左边的表(一个)只连接满足连接条件的任何1行…不多的行。

我需要这样做,因为查询是在COUNTS的汇总中进行的,因此,如果我进行普通的左联接,我将获得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,这是左连接的本质


阅读 212

收藏
2021-03-23

共1个答案

小编典典

如果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
2021-03-23