为什么SELECT 1的多行COUNT(*)总是1?

4
SELECT COUNT(*) FROM (

SELECT 1 FROM ... 
UNION SELECT 1 FROM ...
UNION SELECT 1 FROM ...

) as tmp_table

尽管结果集包括多行,COUNT(*)总是返回1...为什么?

我怀疑你还没有尝试运行 SELECT 1 FROM ... UNION SELECT 1 FROM ... UNION SELECT 1 FROM ... - ta.speot.is
@ta.speot.is:是的,我有。Chris 给出的答案现在可行! - Helmut
1个回答

9

UNION SELECT自动对结果进行分组,这意味着您将不会看到重复的行。您需要使用UNION ALL SELECT ...,这样您的结果就不会被分组,您将能够看到重复的行。

重复的行意味着,因为您总是选择 1,所以它会按照 1 进行分组。


从技术上讲,它执行的是不同的操作而不是分组,但结果是相同的。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接