使用count(1)计算子查询的记录数

问题描述 投票:0回答:1

我有以下查询来验证总记录是否=5。

SELECT COUNT(1)
FROM (
  SELECT COUNT(*) AS total_records
  FROM tbl1
  WHERE version_key = '100047'
 UNION ALL
 SELECT COUNT(*) AS total_records
 FROM tbl2
 WHERE version_key = '100047'
) HAVING COUNT (*)=5;

2 个子查询的计数分别 = 2 和 3,但最终计数不会返回 5。如果没有

HAVING COUNT (*)=5
,最终计数实际上返回 2,这是最后一个子查询的计数。

oracle count subquery
1个回答
0
投票

子查询将返回每个表中每一行的计数。当使用它作为参考表时,计数将仅返回子查询生成的行数(在您的情况下为 2,因为您有两个参考表)。您可以使用 sum() 函数将每列中的结果相加。您可以尝试以下查询并看看这是否是您所期望的吗?

SELECT sum(total_records) as final_count
FROM (
  SELECT COUNT(*) AS total_records
  FROM tbl1
  WHERE version_key = '100047'
 UNION ALL
 SELECT COUNT(*) AS total_records
 FROM tbl2
 WHERE version_key = '100047'
) as final_table;

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.