Mysql 在SQL查询中重用计算

Mysql 在SQL查询中重用计算,mysql,sql,Mysql,Sql,是否可以简化此sql查询?重复使用大量计算,最好命名每个表达式并使用名称而不是完整表达式 SELECT SUM(T2.price * T1.amount) As price, (SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.discount / 100))) As base_price, ((SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.d

是否可以简化此sql查询?重复使用大量计算,最好命名每个表达式并使用名称而不是完整表达式

SELECT SUM(T2.price * T1.amount) As price,
 (SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.discount / 100))) As base_price, 
 ((SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.discount / 100))) * (T3.vat / 100)) As vat_amount,
 (((SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.discount / 100))) * (T3.vat / 100)) + (SUM(T2.price * T1.amount) - (SUM(T2.price * T1.amount) * (T3.discount / 100)))) As total_price
我正在寻找类似的解决方案:

 SELECT SUM(T2.price * T1.amount) As price,
 (price - (price * (T3.discount / 100))) As base_price, 
 (base_price) * (T3.vat / 100)) As vat_amount,
 (vat_amount) + (base_price) As total_price

也许是这样的:

select 
(A.price - (A.price * B.p_discount)) As base_price, 
((A.price - (A.price * B.p_discount)) * B.p_vat) As vat_amount,
(((A.price - (A.price * B.p_discount)) * B.p_vat) + (A.price - (A.price * B.p_discount))) As total_price
from 
    ( select SUM(T2.price * T1.amount) As price, ...
    from T1 join T2 on ....
    ) A
join 
    (select (T3.discount / 100) as p_discount , (T3.vat / 100) as p_vat ,* 
    from T3
    ) B on ...

我试着按照建议使用CTE和子查询,但结果看起来非常复杂且不可读,因此我决定只在sql之外进行计算(本例中为php)

您可以使用子查询或CTE。使用所需的计算创建视图。也可以使用用户定义的变量。