Можно ли посчитать псевдоним результат на 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