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

前端之家收集整理的这篇文章主要介绍了sql – 如何将此LEFT JOIN返回的行数限制为一个?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我认为我已经看到了解决方案,但它们都是非常复杂的查询.我在oracle 11g中作为参考.

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

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

所以示例数据如下:

  1. TABLE 1:
  2. -------------
  3. TICKET_ID ASSIGNMENT
  4. 5 team1
  5. 6 team2
  6.  
  7. TABLE 2:
  8. -------------
  9. MANAGER_NAME ASSIGNMENT_GROUP USER
  10. joe team1 sally
  11. joe team1 stephen
  12. joe team1 louis
  13. harry team2 ted
  14. harry team2 thelma

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

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

解决方法

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

猜你在找的MsSQL相关文章