oracle - max(row_num) 给我的结果与 oracle 中的 count(*) 不同。这是我的查询
问题描述
select count(*)
from (SELECT Instance.JOB_INSTANCE_ID,
Instance.JOB_NAME,
Instance.JOB_KEY,
Execution.JOB_EXECUTION_ID,
Execution.VERSION,
Execution.CREATE_TIME,
Execution.START_TIME,
Execution.END_TIME,
Execution.STATUS,
Execution.EXIT_CODE,
Execution.EXIT_MESSAGE,
Execution.LAST_UPDATED,
Execution.JOB_CONFIGURATION_LOCATION
FROM (SELECT JOB_INSTANCE_ID,
JOB_NAME,
JOB_KEY
FROM PROCESOSBATCH_OWN.BATCH_JOB_INSTANCE
order by JOB_INSTANCE_ID) Instance,
(SELECT JOB_EXECUTION_ID,
VERSION,
JOB_INSTANCE_ID,
CREATE_TIME,
START_TIME,
END_TIME,
STATUS,
EXIT_CODE,
EXIT_MESSAGE,
LAST_UPDATED,
JOB_CONFIGURATION_LOCATION
FROM PROCESOSBATCH_OWN.BATCH_JOB_EXECUTION
WHERE 1 = 1
order by JOB_INSTANCE_ID) Execution
where Instance.JOB_INSTANCE_ID=Execution.JOB_INSTANCE_ID
and Execution.JOB_INSTANCE_ID is not null);
COUNT(*)
----------
9689
select max(row_num)
from (SELECT Execution.row_num,
Instance.JOB_INSTANCE_ID,
Instance.JOB_NAME,
Instance.JOB_KEY,
Execution.JOB_EXECUTION_ID,
Execution.VERSION,
Execution.CREATE_TIME,
Execution.START_TIME,
Execution.END_TIME,
Execution.STATUS,
Execution.EXIT_CODE,
Execution.EXIT_MESSAGE,
Execution.LAST_UPDATED,
Execution.JOB_CONFIGURATION_LOCATION
FROM (SELECT JOB_INSTANCE_ID,
JOB_NAME,
JOB_KEY
FROM PROCESOSBATCH_OWN.BATCH_JOB_INSTANCE
order by JOB_INSTANCE_ID) Instance,
(SELECT rownum as row_num,
JOB_EXECUTION_ID,
VERSION,
JOB_INSTANCE_ID,
CREATE_TIME,
START_TIME,
END_TIME,
STATUS,
EXIT_CODE,
EXIT_MESSAGE,
LAST_UPDATED,
JOB_CONFIGURATION_LOCATION
FROM PROCESOSBATCH_OWN.BATCH_JOB_EXECUTION
WHERE 1 = 1
order by JOB_INSTANCE_ID) Execution
where Instance.JOB_INSTANCE_ID=Execution.JOB_INSTANCE_ID
and Execution.JOB_INSTANCE_ID is not null);
MAX(ROW_NUM)
------------
9854
解决方案
我们没有计算最终结果的最大值rownum
。我们row_num
在其中一个内部查询中定义rownum as row_num
,在其之上添加了更多过滤器。
假设这个内部查询返回了 10k 行,max(row_num)
这里将返回 10000。
从 2000 到 3000 的行号在我们的主查询中被过滤掉。由于我们已经定义rownum as row_num
,max(row_num)
仍然会返回 10000,同时max(rownum)
在同一个查询中会返回 9000。
一般来说,max(rownum)
会给出与count(*)
相同查询相同的结果。情况并非如此,我们使用的是 tiffingmax(row_num)
而不是max(rownum)
,这可能会有所不同。
编码快乐!☺</p>
推荐阅读
- java - java.lang.NullPointerException : org.openqa.selenium.OutputType)”,因为“screenShot”为空
- vb.net - 相关表中的 LINQ to SQL 查询
- java - CordovaError:找不到“JAVA_HOME”环境变量。尝试手动设置
- flutter - 在 TabBar 中颤动滚动水平小部件
- python - 从 bash 脚本调用 python 文件函数
- node.js - 如何使用命令在 Windows 系统中获取安全级别的事件日志,而不在管理模式下运行 PowerShell
- c# - 使用过滤器在绑定的 DataGridView 中保存更改
- .htaccess - 当有人访问我的网站时,如何只删除 /home ?
- javascript - 使用 multar post 和 axios 将图像发送到后端
- c++ - 非标准语法;使用 '&' 创建指向成员 C++ 的指针