莫淡749 2022-03-16 13:25 采纳率: 66.7%
浏览 84

oracle查询出两个表内字段相同但数据量不同的表名字

查询数据库表名字(表的数据量不同),两个表的字段相同,数据量不相同的表筛选出来

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-16 17:01
    关注

    这个题目有点歧义,两个表字段相同是指的所有字段名都相同还是只有部分字段名相同?还有字段顺序是否需要考虑?
    我先假设你说的是所有字段名都相同且字段顺序也一致的两个表吧,因为部分字段名相同的太多了
    然后你也没说你的版本是多少,在不同版本里是可以借用不同的函数来达到同样的效果的,比如下面这个sql在21c版本里可以运行

    select owner1,
           table_name1,
           nvl(x1.num_rows, 0) num_rows1,
           owner2,
           table_name2,
           nvl(x2.num_rows, 0) num_rows2
      from (select t1.owner      owner1,
                   t1.table_name table_name1,
                   t2.owner      owner2,
                   t2.table_name table_name2
              from (select a.owner,
                           a.table_name,
                           json_objectagg('k',
                                          a.column_name returning varchar2(32767)) c
                      from dba_tab_cols a
                     group by a.owner, a.table_name) t1,
                   (select a.owner,
                           a.table_name,
                           json_objectagg('k',
                                          a.column_name returning varchar2(32767)) c
                      from dba_tab_cols a
                     group by a.owner, a.table_name) t2
             where t1.c = t2.c
               and t1.table_name <> t2.table_name) x,
           dba_tables x1,
           dba_tables x2
     where x.owner1 = x1.owner
       and x.table_name1 = x1.table_name
       and x.owner2 = x2.owner
       and x.table_name2 = x2.table_name
       and nvl(x1.num_rows, 0) <> nvl(x2.num_rows, 0)
    

    img

    其实主要就是两个处理方向,
    一种是按字段一个个匹配,用count条件来判断匹配上的行(字段)和两张表各自的行(字段)是否都相等,相等则说明字段一样;
    另外一种方式就是上面这个sql这种,将所有字段按顺序拼成一个值,再来判断这个值是否相等即可。
    至于行数,这里是可能存在问题的,这个行数和当前实际行数不一定匹配,必须要收集一次统计信息后行数才会更新

    评论

报告相同问题?

问题事件

  • 创建了问题 3月16日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图