You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中不依赖表数据用SELECT创建列表并计算求和?

在MySQL中无需数据表构造列表并使用聚合函数的方法

当然可以在MySQL中不依赖现有数据表,直接构造数据列表并使用聚合函数计算,下面是几种可行的实现方式,以及对你之前写法错误的说明:

方法一:使用UNION ALL构造行集

通过UNION ALL将每个数值作为单独的行返回,再对这一列行值求和:

SELECT SUM(num) 
FROM (
    SELECT 3 AS num UNION ALL
    SELECT 8 UNION ALL
    SELECT 9 UNION ALL
    SELECT 7
) AS temp;

这里需要注意两点:

  • 每个SELECT返回单行单列的数值,并统一列别名(如num)
  • 子查询必须指定别名(如temp),MySQL要求FROM后的子查询必须有别名

方法二:使用VALUES子句(MySQL 8.0.19+支持)

MySQL 8.0.19及以上版本支持VALUES子句直接构造行集,写法更简洁:

SELECT SUM(num)
FROM (VALUES (3), (8), (9), (7)) AS temp(num);

VALUES (3), (8)...会生成一个包含四行单列的临时数据集,后续通过别名temp(num)指定表名和列名,即可用SUM求和。

你之前写法错误的原因

  • SELECT SUM(*) FROM (SELECT 3, 8, 9, 7):
    子查询返回的是一行四列的数据,而SUM(*)是对行的数量进行聚合(而非列值相加),同时MySQL要求FROM后的子查询必须有别名,所以会直接报错。
  • SELECT SUM((SELECT 3, 8, 9 ,7)):
    内层子查询返回多列结果,而SUM函数仅能接受单个表达式作为参数,无法处理多列输入,因此执行失败。

内容的提问来源于stack exchange,提问作者irrbloss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:22:07