我遇到如下查询:
SELECT member_id, prefix, Sum(1) AS Expr1 from ...
我对 Sum(1)
部分感到困惑。我不知道它有什么作用。然后我尝试了一个简化的查询,发现Sum(1)
的结果等于表中记录的总数count(*) x 1。
Sum(2)
将返回 count(*) x 2
Sum(3)
将返回 count(*) x 3
等等..
试图在互联网上找到这样的例子并进行一些解释,但找不到。总和表达式从来都不是文字数字。你能帮我理解这一点吗?
最佳答案
正如您所使用的,SUM()
函数将对表中所有记录的值/列输入求和(假设没有 WHERE
子句)。在本例中,您将为每条记录求和常数值 1。考虑以下示例数据可能会更好地帮助您理解:
member_id | prefix | one (constant 1)
1 | A | 1 \
2 | B | 1 - SUM(1) = 3 in this case
3 | C | 1 /
直观上看,将 member_id
值相加将得到 6 作为输出。如果我们对总共有 3 条记录的表进行 SUM(1)
计算,我们将得到 3,即记录数。
关于MySql SUM(1) 返回表中记录的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287332/