You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL技术问询:如何对比security_privileges表中两组版本数据的行数

解决方法:对比两组数据的行数

让我来帮你搞定这个问题!你的核心需求是对比security_privileges表中两组数据的行数:

  • 第一组:表中最新version_number对应的所有记录数(你提到是8行)
  • 第二组:last_update早于2020年3月1日的所有记录数(你提到是6行)

你之前尝试的自连接SQL逻辑偏了——它是在关联version_number相差2的记录,和你的需求不匹配,所以没法得到正确结果。下面是两种正确的实现方式:

方式1:分开查询两个数值

查询最新version_number的行数

SELECT COUNT(*) AS latest_version_rows
FROM security_privileges
WHERE version_number = (SELECT MAX(version_number) FROM security_privileges);

这条语句先通过子查询拿到最大的version_number,再统计该版本下的所有记录数,会返回你需要的8。

查询last_update早于2020-03-01的行数

SELECT COUNT(*) AS old_update_rows
FROM security_privileges
WHERE last_update < '2020-03-01';

这条直接筛选出更新时间早于2020年3月1日的记录并统计数量,返回6。

方式2:合并成一个查询返回结果

如果希望在一次查询中得到两组数据的对比结果,可以用UNION ALL合并两个统计:

SELECT '最新version_number行数' AS 统计类别, COUNT(*) AS 行数
FROM security_privileges
WHERE version_number = (SELECT MAX(version_number) FROM security_privileges)
UNION ALL
SELECT 'last_update早于2020-03-01的行数' AS 统计类别, COUNT(*) AS 行数
FROM security_privileges
WHERE last_update < '2020-03-01';

执行后会得到两行结果,清晰展示两组数据的对比。


内容的提问来源于stack exchange,提问作者Skywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:48:09