使用sql标签

在mybatis中使用sql标签后条件中含有子查询时,我们的select标签想使用子查询中的字段,就会出现无法获取子查询字段;亦或者查询条件需要通过一个子查询获得时;我们可以采取连接查询将子查询放到到select标签中,可以解决sql标签中子查询结果在select标签中无法或取得问题。

SELECT
	sspil.*,
	ssi.VERIFY_STATUS,
	ssi.INVOICE_DATE invoiceDate,
	ssi.INVOICE_NUMBER invoiceNumber,
	opened.openedAmount paymentAmount,
	IFNULL( ssi.SI_AMOUNT, 0 ) - IFNULL( opened.openedAmount, 0 ) uncollected,
	ssi.REMARK remark 
FROM
	sd_sale_payment_invoice_list sspil
	LEFT JOIN sd_sale_invoice ssi ON sspil.SALE_INVOICE_ID = ssi.SALE_INVOICE_ID
	LEFT JOIN (
		SELECT
			sspil.SALE_INVOICE_CODE,
			SUM( ssp.SP_AMOUNT ) openedAmount 
		FROM
			sd_sale_payment ssp
			LEFT JOIN sd_sale_payment_invoice_list sspil ON ssp.SALE_PAYMENT_ID = sspil.SALE_PAYMENT_ID 
		WHERE
			ssp.VERIFY_STATUS IN ( 'xxx', 'yyy' ) 
			AND ssp.DEL_FLAG = FALSE 
		GROUP BY
			sspil.SALE_INVOICE_CODE 
	) opened ON opened.SALE_INVOICE_CODE = sspil.SALE_INVOICE_CODE 
WHERE
	1 = 1 

仅供参考,谢谢!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐