Можно ли посчитать псевдоним результат на mysql

На самом деле мой запрос выглядит так:

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

ПБ - это каждый 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

не знаю, возможно ли это

4 ответа

Решение

Да, в 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;
+ --------- + --------- + --------- + ------------- +
| column1 | колонка2 | колонка3 | columnTotal |
+---------+---------+---------+-------------+
|      50 |      40 |      60 |         150 |
+---------+---------+---------+-------------+
1 ряд в наборе (0,00 сек)

Используйте производную таблицу:

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

Вы можете обернуть его еще одним слоем, например так:

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..
)
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
Другие вопросы по тегам