前言
这几天一直在捣鼓老项目,客户每天都在提新需求,改的快吐血了,WTF!!!
已知contract是合同主表,contract_detail是合同商品子表,它们直接是一对多的关系,通过合同流水号CUSTOMS_CODE来关联。举个栗子:
contract
contract_detail
如图所示,合同流水号SC370193301300000005下有两个商品。
现遇到个新需求,展示合同列表的时候也需要展示它所属的商品的MC编码,有多个的话用逗号来间隔,虽然可以在代码里实现,但是用MySQL的拼接字符串函数GROUP_CONCAT(expr)来直接用SQL实现。
SQL如下:
SELECT
c.*,
(
SELECT
GROUP_CONCAT( cd.MC )
FROM
contract_detail cd
WHERE
c.CUSTOMS_CODE = cd.CUSTOMS_CODE
AND cd.MC != ''
) mc
FROM
`contract` c
查询结果如下: