Mysql 在SQL查询中重用计算
是否可以简化此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
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。使用所需的计算创建视图。也可以使用用户定义的变量。