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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的MsSQL相关文章