从两个没有公共字段的表中提取数据
Data extraction from two tables with no common field
通过登录到我的 Oracle 模式产品,我 运行 通过以下两个查询来获取所需的详细信息:
Query-1:查找 PRODUCT 架构中开始日期早于 2020 年 11 月 1 日的所有 session 数字。
select SESSION_NO, SESSION_BEG
from APP_SESSION
where SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by SESSION_BEG;
Query-2:在 PRODUCT 模式中查找所有 table 及其大小,其中 table 名称由 Session 数字 357924160 这是一个 Session 我从 Query-1 输出中得到的许多数字。
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS
where SEGMENT_TYPE='TABLE' and
SEGMENT_NAME like '%357924160%'
order by "SIZE in MB" desc;
因为 table 和 USER_SEGMENTS 和 APP_SESSION 这两个 table 之间没有公共列,并且 Query-1 输出中有很多 Session 数字(以千为单位)要检查,我必须为每个 Session 号码一次又一次地 运行 Query-2。
我想知道 Oracle 中是否有任何方法可以将 query-1 和 query-2 连接在一起,以找到大小为 table 的所有 tables,其中 table 名称包含Session 开始日期早于 2020 年 11 月 1 日的数字?
您可以执行以下操作:
select ap.SESSION_NO,
ap.SESSION_BEG,
us.SEGMENT_NAME,
us.BYTES/1024/1024 AS "SIZE in MB"
from APP_SESSION ap
INNER JOIN USER_SEGMENTS us
ON us.SEGMENT_TYPE = 'TABLE' AND
us.SEGMENT_NAME LIKE '%' || ap.SESSION_NO || '%'
where ap.SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by ap.SESSION_BEG,
"SIZE in MB"
你可以试试这个:
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS, APP_SESSION
where SEGMENT_TYPE='TABLE' and
SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and
SEGMENT_NAME like '%' || SESSION_NO || '%'
order by "SIZE in MB" desc;
通过登录到我的 Oracle 模式产品,我 运行 通过以下两个查询来获取所需的详细信息:
Query-1:查找 PRODUCT 架构中开始日期早于 2020 年 11 月 1 日的所有 session 数字。
select SESSION_NO, SESSION_BEG
from APP_SESSION
where SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by SESSION_BEG;
Query-2:在 PRODUCT 模式中查找所有 table 及其大小,其中 table 名称由 Session 数字 357924160 这是一个 Session 我从 Query-1 输出中得到的许多数字。
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS
where SEGMENT_TYPE='TABLE' and
SEGMENT_NAME like '%357924160%'
order by "SIZE in MB" desc;
因为 table 和 USER_SEGMENTS 和 APP_SESSION 这两个 table 之间没有公共列,并且 Query-1 输出中有很多 Session 数字(以千为单位)要检查,我必须为每个 Session 号码一次又一次地 运行 Query-2。
我想知道 Oracle 中是否有任何方法可以将 query-1 和 query-2 连接在一起,以找到大小为 table 的所有 tables,其中 table 名称包含Session 开始日期早于 2020 年 11 月 1 日的数字?
您可以执行以下操作:
select ap.SESSION_NO,
ap.SESSION_BEG,
us.SEGMENT_NAME,
us.BYTES/1024/1024 AS "SIZE in MB"
from APP_SESSION ap
INNER JOIN USER_SEGMENTS us
ON us.SEGMENT_TYPE = 'TABLE' AND
us.SEGMENT_NAME LIKE '%' || ap.SESSION_NO || '%'
where ap.SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by ap.SESSION_BEG,
"SIZE in MB"
你可以试试这个:
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS, APP_SESSION
where SEGMENT_TYPE='TABLE' and
SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and
SEGMENT_NAME like '%' || SESSION_NO || '%'
order by "SIZE in MB" desc;