使用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
仅供参考,谢谢!
更多推荐
mybatis中子查询
发布评论