2

其实我的查询是这样的:

SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
ABS(30-70) columnC , ABS(40-70) columnD , etc..

pb is each ABS() 实际上是一些复杂的计算,我需要添加最后一个 columnTotal 女巫是每个 ABS() 的 SUM,我想以一种方式做到这一点而不重新计算所有。我想要实现的是:

SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
ABS(30-70) columnC , ABS(40-70) columnD , SUM(columnA+columnB+columnC+columnD) columnTotal 

. 预期的结果如下所示:

columnA    columnB    columnC    columnD    columnTotal
  60         60          40         30          190

不知道有没有可能

4

4 回答 4

2

是的,在 MySQL 中你可以这样做:

SELECT 
  @a:=ABS(40-90) AS column1, 
  @b:=ABS(50-10) AS column2, 
  @c:=ABS(100-40) AS column3, 
  @a+@b+@c as columnTotal;
+---------+---------+---------+-------------+
| 第 1 列 | 第 2 列 | 第 3 列 | 栏目总数 |
+---------+---------+---------+-------------+
| 50 | 40 | 60 | 150 |
+---------+---------+---------+-------------+
一组中的 1 行(0.00 秒)
于 2013-08-27T13:06:13.323 回答
0

您可以像这样将其包裹在另一层中:

select columnA, columnnB, columnnC, columnnD, (columnA+ columnnB+ columnnC+ columnnD) total
from 
(
SELECT ABS(20-80) columnA , ABS(10-70) columnB ,
ABS(30-70) columnC , ABS(40-70) columnD , etc..
)
于 2013-08-27T13:05:21.057 回答
0
SELECT t.*, (columnA+columnB...) as total
FROM (
    SELECT ABS(20-80) columnA , ABS(10-70) columnB, ABS(30-70) columnC , ABS(40-70) columnD 
    ...
) as t
于 2013-08-27T13:06:06.833 回答
0

使用派生表:

SELECT
    columnA , columnB ,
    columnC , columnD ,
    SUM(columnA+columnB+columnC+columnD) columnTotal 
FROM
 (
   SELECT
       ABS(20-80) columnA , ABS(10-70) columnB ,
       ABS(30-70) columnC , ABS(40-70) columnD 
   FROM ...
 ) AS dt
于 2013-08-27T13:07:27.357 回答