【发布时间】:2023-03-08 16:27:01
【问题描述】:
我是 SQL 新手。
问题:假设我将“x”COUNT(x.xValue) 的别名表中包含的数量计算为 217。现在当我添加子查询“y”和然后再次计数,我有COUNT(x.xValue) 突然平方它的自我 -> 47089。为什么会发生这种情况?
(注意:别名表“x”和“y”的数量相同 -> 217。)
我该如何解决这个问题。我不想使用变量或视图。
SELECT COUNT(x.xValue) + COUNT(y.yValue) AS CountXY
FROM
(SELECT value AS xValue FROM table1
WHERE
...) AS x,
(SELECT value AS yValue FROM table1
WHERE
...) AS y
“CountXY”的结果:94178。
我期待 'CountXY' 的结果:434
【问题讨论】:
-
您在那里写的内容称为 theta-join 或“旧的连接方式”。表
x的每一行都将连接到表y的每一行。如果两个表都包含 217 行,你会得到你所说的x * y。由于在您的情况下 x 和 y 都是 217,因此您得到 217 的平方。您真正想要的是SELECT (SELECT COUNT(*) FROM table1 WHERE..) + (SELECT COUNT(*) FROM table2 WHERE..) AS my_total_count)。