2013-08-27 3 views
2

На самом деле мой запрос, как это:ли можно считать результат псевдоним на MySQL

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

УБ является каждый из ABS(), на самом деле некоторые сложные вычисления, и мне нужно, чтобы добавить последний columnTotal ведьма является SUM каждого ABS(), и я хотел бы сделать это одним способом, не пересчитывая все. Чего бы я хотел достичь:

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 

не знаю, если его можно

ответ

2

Да, в MySQL вы можете сделать это следующим образом:

SELECT 
    @a:=ABS(40-90) AS column1, 
    @b:=ABS(50-10) AS column2, 
    @c:=ABS(100-40) AS column3, 
    @[email protected][email protected] as columnTotal; 
 
+---------+---------+---------+-------------+ 
| column1 | column2 | column3 | columnTotal | 
+---------+---------+---------+-------------+ 
|  50 |  40 |  60 |   150 | 
+---------+---------+---------+-------------+ 
1 row in set (0.00 sec) 
+0

большое спасибо, работает отлично! – albator

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.. 
) 
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 
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 
Смежные вопросы