我有以下查询来验证总记录是否=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,这是最后一个子查询的计数。
子查询将返回每个表中每一行的计数。当使用它作为参考表时,计数将仅返回子查询生成的行数(在您的情况下为 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;
希望这有帮助