当前位置: 首页 > 面试题库 >

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

严恩
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 这是我的数据: SQL字段: http **://sqlfiddle.com/#!2/dfe09/1** 对于每个组,我想将返回的item_ID的数量限制为最多2个。我不在乎返回哪个2个。如果该组少于2行,则仅返回1行。 我无法为每个组写一个select top * 2并合并选择,因为我有几百个组。 我不确定从哪里开始,非常感谢您的帮助。 使用MS SQL 2005 (表布局与示例中的

  • 我正在尝试从product表中获取所有记录,这些记录是唯一的,但我使用leftjoin添加第二个表,其中包含这些产品的图像,但当我这样做时,它会多次返回一些产品,因为一些产品有一个或多个图像。我如何在product_images表上使用限制来确保它只得到1个图像而不是全部。下面的例子不起作用,那么这可能吗?

  • 问题内容: 有没有一种方法可以使Oracle查询的行为类似于包含MySQLlimit子句的行为? 在MySQL中,我可以这样做: 以获得第21到30行(跳过前20行,给出下10行)。这些行是在后面选择的,因此它实际上按字母顺序从第20个名称开始。 在Oracle中,人们唯一提到的是rownum伪列,但是它在之前 被评估,这意味着: 将返回一个随机的十行,按名称排序,这通常不是我想要的。它还不允许指

  • 问题内容: 我需要查询里面有很多在它的数据的Sybase数据库,并希望设置限制,因此DB后10个结果停止查询。 关键的是性能,因此,如果找遍了所有结果,然后再回到过去的10个结果将是没有用的。 提前致谢 问题答案: 我相信你可以做一个,然后再在这个环节中的所有查询,直到进一步的将返回不超过10行。正如评论指出,这会影响 所有 在会议之后的查询(不只是S ^!),直至关闭(通过设置为0),或设置不同

  • 因此,我正在对最新的DynamoDBEnhancedAsyncClient使用分页。 然而,在上应用限制()时,它并没有限制单个页面上的项目。示例:如果我通过仍然在中显示2条记录。不确定是以项目数为参数还是以页数为参数。如果是它的页面,有没有办法限制每页的数量?我们知道DDB创建的页面最大大小为1MB。但我们的json记录以字节为单位,这意味着每页将获取的记录。这不是效率低下吗?是否可以限制每页的

  • 我有以下练习: 编写一个名为createListOfObjects的函数,该函数接受 包含名字和姓氏以及返回值的字符串数组 一个对象数组,每个对象都具有属性 和以及名字和姓氏值 对应值* var namesList=['Cameron Betts','Shana Lopez','Angela li']* createListOfObjects(名称列表) = 到目前为止,我的解决方案是: 但它返回