首页 > 数据库 >Oracle两表关联,只取B表的第一条记录

Oracle两表关联,只取B表的第一条记录

时间:2024-09-27 15:34:59浏览次数:8  
标签:insert varchar 两表 只取 col2 values Oracle into select

1 说明

A表、B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序);

首先想到了直接写个带排序的子查询去匹配外围的值,从这个结果集中只要第一条,但是经过验证发现,里边的条件是获取不到外层的值的,因此此方案不可行;

发现 row_number() over函数可用,以下是数据环境及结果。

create table A(ANAME varchar(20));
insert into A values('alan');
insert into A values('Alee');
insert into A values('aspn');

create table B
(
BNo varchar(10),
BTell varchar(20),
Name varchar(20)
);
insert into B values('NO1','1366666','alan');
insert into B values('NO1','1388888','alan');
insert into B values('NO1','1399999','alan');
insert into B values('NO2','1333333','Alee');
insert into B values('NO3','1311111','aspn');
insert into B values('NO3','1322222','aspn');

需求是只要每个人的第一条记录(按BTELL排序)

select *
  from a
  left join (select *
               from (select b. *,
                            (row_number()
                             over(partition by bno order by BTell desc)) px
                       from b) e
              where px = 1) t
    on a.aname = t.name;
--单表的示例
--一条数据有多条日志记录,结果集只取最新的一条
select fi.col1, fi.col2, fi.col3
  from (select t.col1,
               t.col2,
               t.col3,
               row_number() over(partition by t.col3 order by t.col2 desc) rw
          from t
         where 1 = 1
           and to_char(t.col2, 'yyyy-mm-dd') >= '2024-09-01'
           and to_char(t.col2, 'yyyy-mm-dd') <= '2024-09-21') fi
 where fi.rw = 1
   and to_char(col2, 'yyyy-mm-dd') >= '2024-09-01'
   and to_char(col2, 'yyyy-mm-dd') <= '2024-09-21'
 order by col2 desc

原文链接:https://blog.csdn.net/weixin_42256765/article/details/107640602

 

标签:insert,varchar,两表,只取,col2,values,Oracle,into,select
From: https://www.cnblogs.com/daytoy105/p/18435864

相关文章

  • oracle rac启停顺序
    一、rac关闭顺序1.停止em服务emctlstatusdbconsoleemctlstopdbconsole#两个节点操作2.停止数据库srvctlstopdatabase-dprod-oimmediate3.停监听srvctlstatuslistenersrvctlstoplistener#停所有监听srvctlstoplistener-n#rac1停某个监听......
  • oracle数据泵导出导入数据
    1.创建表空间createtablespacetbs_testdatafile'/yourpath/tbs_test01.dbf'size5gautoextendonnext1gmaxsizeunlimited;2.创建用户并授权createusertestidentifiedby123456defaulttablespace tbs_test temporarytablespacetempquotaunlimitedontes......
  • oracle rac开启归档
    1.创建归档目录su-gridasmcmdlsdgcdframkdirarch2.修改归档路径su-oraclesqlplus/assysdfbaaltersystemsetlog_archive_dest_1='location=+fra/arch'scope=spfilesid='prod1';altersystemsetlog_archive_dest_1='location=+fra......
  • PARTIV-Oracle数据库存储结构-内存架构
    14.内存架构14.1.Oracle是数据库内存结构简介当实例启动时,Oracle数据库会分配一个内存区域并启动后台进程。这个内存区域存储以下信息:程序代码每个已连接会话的信息,即使它当前未活跃程序执行期间需要的信息,例如,正在从中提取行的查询的当前状态锁数据等在进程间共享和通信......
  • Oracle 19c OCP 认证考试 083 题库(第37题)- 2024年修正版
    【优技教育】Oracle19cOCP083题库(Q37题)-2024年修正版考试科目:1Z0-083考试题量:85道(线下)通过分数:57%以上考试时间:150min(线下)本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com.cn/ocp/083kaoshitiku/38365593598.h......
  • PARTV-Oracle实例架构-Oracle数据库实例
    13.Oracle数据库实例13.1.Oracle数据库实例简介13.1.1.数据库实例结构13.1.2.数据库实例配置13.2.实例启动与关闭概述13.2.1.实例概述与数据库启动13.2.2.数据库概述与实例关闭13.3.检查点概述13.3.1.检查点目的13.3.2.Oracle数据库初始化检查点的时间13.4.......
  • 【EBS】Oracle EBS 之 OM 模块整理(1)
      近期在学习OracleEBS系统中的OM订单销售模块的相关内容,这里先做一个基本的流程整理记录,从销售订单的录入登记,最终到订单货物的发运确认等。一、基本流程  一个基本的订单流程,基本上都是从接到客户的需求订单开始的,在将该订单录入登记到系统中之后,便可以通过EBS中的完......
  • hibernate 自定义表名与列名 - 增删改查分页 - 兼容Mysql和Oracle
    1.新增service,先组装SQLimportlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.data.domain.Page;importorg.springframework.stereo......
  • 【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7441382.html?templateId=1718516【标题】YMP迁移oracle不兼容给用户授权高级包【关键字】oracle迁移,高级包授权【问题描述】迁移评估任务中,oracle迁移YashanDB,YMP不兼容语句:grantexecuteonsys.dbms_statst......
  • 【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7441382.html?templateId=1718516【标题】YMP迁移oracle不兼容给用户授权高级包【关键字】oracle迁移,高级包授权【问题描述】迁移评估任务中,oracle迁移YashanDB,YMP不兼容语句:grantexecuteonsys.dbms_sta......