当前位置: 首页 > 知识库问答 >
问题:

仅使用select查询的SQL一对一映射

虞高雅
2023-03-14

我有两个表名称LeftTable和RightTable如下

左表

obsid    Name      Value                 
1        Ronak     A                      
2        Aakash    B                      
3        Pankti    C                      
4        Sanket    D     

右表

obsid        Name       Value
1            Jhone      F
2            Isabella   M
3            Jonathan   L
4            javafx     p                 

现在,当我在某种条件下离开join时,输出将如下所示

结果表

obsid    Name      Value                  obsid        Name       Value
-------------------------------------------------------------------------
1        Ronak     A                      1            Jhone      F
1        Ronak     A                      2            Isabella   M
1        Ronak     A                      3            Jonathan   L
1        Ronak     A                      4            javafx     p
2        Aakash    B                      2            Isabella   M
2        Aakash    B                      3            Jonathan   L 
2        Aakash    B                      4            javafx     p
3        Pankti    C                      3            Jonathan   L
3        Pankti    C                      4            javafx     p
4        Sanket    D                      4            javafx     p

这个左连接帮助我在应用程序中实现一对多关系。

左连接条件在我的应用程序中是动态的。这只是我在这里展示的一个例子。假设上例中的左连接条件是LeftTable。淫秽的

如上所述,一对一的输出如下

obsid    Name      Value                  obsid        Name       Value
1        Ronak     A                      1            Jhone      F
2        Aakash    B                      2            Isabella   M
3        Pankti    C                      3            Jonathan   L
4        Sanket    D                      4            javafx     p

我通过两种方式实现了这一功能:

  1. 使用游标
  2. 使用选择查询一个接一个地获取记录

在我的应用程序中,数据库表是动态的。因此,虽然处理数百万条记录需要花费太多时间,但一条一条地获取记录并对其进行处理需要时间。

有没有办法在单选查询中实现一对一的关系??

我希望避免逐个获取记录,我使用的是Mysql数据

请帮帮我。

共有1个答案

督德明
2023-03-14

只需使用内部联接,即可实现示例中所示的所需输出。

select * from LeftTable L inner join RightTable R
on L.obsid=R.obsid

但如果左表中有重复的obsid,您可以使用下面的查询

   select  A.obsid,A.Name,A.Value, R.obsid,R.Name,R.Value from(
     select *,row_number() over (partition by obsid order by obsid ) as row_num 
    from LeftTable)A
     inner join RightTable R
     on A.obsid=R.obsid
     where A.row_num=1

请让我知道这是你的期望

 类似资料:
  • 我需要以下场景的SQL查询。 @ManyToOne@JoinColumn(name=“PRODUCT_ID”)私有产品产品; 但我没有在产品中指定一个。

  • 我现在在大学学习数据库,在我的项目中,我有3个表:、和 联赛(leagueId,leagueName) 团队(teamId,teamName) 具有(leagueId,teamId,year)

  • 在mapper中,我调用了一个proc'xyz',它返回所查询的ProcessType表的行列表的光标。

  • 问题内容: 我有一个带下表的sqlite数据库: 两个示例记录如下所示: (大麦的球队输了,安娜的赢了。每场比赛每队都有几名球员。)我想创建一个查询,该查询将返回所有有x个玩家在一个团队而y个玩家在另一个团队的游戏,以及这些游戏的累积结果。游戏。 我知道如何使用perl和csv文件来执行此操作,并且我相信我可以对dbi接口使用相同的方法。但是,我想学习如何仅使用SQL查询来创建此报告。我是SQL的

  • 问题内容: 我们有一个包含两百万行的表,其中对它的所有查询将是使用和进行之间的查询。同样,将只有一种可能的结果。例如… 我目前在和上都有一个唯一的聚集索引。到目前为止,我还无法弄清楚如何进一步优化查询和索引,以最大程度地减少所处理的行。执行计划当前报告在查找一个唯一的正确答案时处理了将近0.5行和113k行的成本。 我可能会忽略哪些选择? 根据要求,当前执行计划中的一些详细信息: 问题答案: 我想

  • 我正在对PeopleSoft数据库进行查询,不确定是否可以根据初始查询在一次调用中从同一个表中获取信息。例如,我正在访问的表返回EmployeeID、FullName、FirstName、LastName、Position\u NBR和ReportsTo。但是ReportsTo是以经理的Position\u NBR(在同一个表中找到)的形式提供的,我想以name格式提供。我想这样做,但不确定是否可