考虑类似于的查询:
SELECT sum(EXPR) as total,
sum(EXPR) as total2,
sum(total+total2) as grandtotal
FROM tablename
Run Code Online (Sandbox Code Playgroud)
这出现并在字段列表中显示未知列总数.
无论如何在计算中引用别名字段而不重新输入sum表达式,因为sum(EXPR)每一侧都很长.
ang*_*son 23
以下是数据库引擎中执行操作的顺序.
请注意,这是一个关于如何执行事物的语义视图,数据库可能以不同的顺序执行操作,但它必须产生结果,就像它以这种方式完成一样.
一些数据库引擎允许你绕过这一点,通过将"GROUP BY 2"命名为SELECT-part中第二列的分组,但如果你坚持上述顺序,你现在应该知道你的代码没有的原因工作是没有名称为total或total2(尚)的列.
换句话说,您需要重复这两个表达式,或者找到另一种方法.
你可以做的是使用一个子查询(假设你是支持这个的MySQL版本):
SELECT total, total2, total+total2 as grandtotal
FROM (
SELECT sum(EXPR) as total, sum(EXPR) as total2
FROM tablename
) x
Run Code Online (Sandbox Code Playgroud)
根据评论剔除其余部分.
我对MySQL知之甚少,所以您可能需要对子查询进行别名:
...
FROM tablename
) AS x
^-+^
|
+-- add this
Run Code Online (Sandbox Code Playgroud)
某些数据库引擎也不允许在别名子查询时使用关键字AS,因此如果上述方法不起作用,请尝试以下操作:
...
FROM tablename
) x
^
|
+-- add this
Run Code Online (Sandbox Code Playgroud)
SELECT total, total2, total + total2 as grandtotal from (
SELECT sum(EXPR) as total,
sum(EXPR) as total2,
FROM tablename
) x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12152 次 |
| 最近记录: |