我有一个SELECT,内容如下
SELECT
(very complex calc1) as `amount`,
(very complex calc2) as `paid_onlne`,
(very complex calc3) as `paid_by_check`,
(very complex calc1) - (very complex calc2)-(very complex calc3) as `amount_due`
FROM billings
GROUP BY billings.id
所有的计算都使用一个多的子选择。
以前有人问过这个问题,但我正在寻找一种方法,能够在后续列中重用calc规范1,2,3,而不必一遍又一遍地粘贴代码--留下一个非常难以维护的查询。
"目的不是为了提高性能,而是为了让编辑更容易。真正的应用程序中的calc1在4个不同的列中使用--所以如果需要改变,我必须做4次。
是的,这是有可能的。纬度连接 - MySQL 8.0.14:
SELECT billings.id,
s1.amount,
s2.paid_onlne,
s3.paid_by_check,
s1.amount - s2.paid_online - s3.paid_by_check as `amount_due`
FROM billings
,LATERAL JOIN (very complex calc1) s1
,LATERAL JOIN (very complex calc2) s2
,LATERAL JOIN (very complex calc3) s3
GROUP BY billings.id;