欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL拼接函数之group_concat妙用

程序员文章站 2024-03-20 08:49:46
...
前言

这几天一直在捣鼓老项目,客户每天都在提新需求,改的快吐血了,WTF!!!

已知contract是合同主表,contract_detail是合同商品子表,它们直接是一对多的关系,通过合同流水号CUSTOMS_CODE来关联。举个栗子:

contract

MySQL拼接函数之group_concat妙用

contract_detail

MySQL拼接函数之group_concat妙用

如图所示,合同流水号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

查询结果如下:

MySQL拼接函数之group_concat妙用