【发布时间】:2017-08-14 00:07:51
【问题描述】:
我有以下查询现在运行良好,我一直在尝试优化它,因为我使用相同的子查询 4 次。想出一个更好/更智能的解决方案会很棒。谢谢
这里是查询:
选择 invoices.invoice_id ,invoices.invoice_amount ,( 选择 SUM(invoice_payment_amount) 作为总计 FROM invoice_payments 其中 invoice_payment_invoice_id = invoices.invoice_id ) 作为付款 ,round((invoices.invoice_amount-( 选择 SUM(invoice_payment_amount) 作为总计 FROM invoice_payments 其中 invoice_payment_invoice_id = invoices.invoice_id )),2) 作为平衡 从发票 在哪里 ( 回合((发票.invoice_amount - (选择 SUM(invoice_payment_amount) 作为总计 FROM invoice_payments 其中 invoice_payment_invoice_id = invoices.invoice_id) ),2) ) > 0 或者 ( 回合((发票.invoice_amount - (选择 SUM(invoice_payment_amount) 作为总计 FROM invoice_payments 其中 invoice_payment_invoice_id = invoices.invoice_id) ),2) ) 一片空白 按余额排序SQL 小提琴:http://sqlfiddle.com/#!9/aecea/1
【问题讨论】:
-
使用 MariaDB 10.2 或 MySQL 8.0,您可以使用 CTE。
标签: mysql sql join optimization subquery