为什么SELECT 1的多行COUNT(*)始终为1?

时间:2012-08-05 10:37:44

标签: mysql sql

SELECT COUNT(*) FROM (

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

) as tmp_table

尽管结果集包含多行,COUNT(*)将始终返回1 ...为什么?

1 个答案:

答案 0 :(得分:9)

UNION SELECT会自动对结果进行分组,这意味着您不会看到重复的行。您需要的是UNION ALL SELECT...,那么您的结果将不会被分组,您将看到重复的行。

重复行的含义,因为您始终选择1,因此它按1分组。