所以我想我已经看到了解决方案,但是它们都是非常复杂的查询。我在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,这是左连接的本质
如果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