参考文档
MySQL GROUP_CONCAT() function:https://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php
GROUP_CONCAT() 函数的使用
MySQL Version: 5.6
数据素材
CREATE TABLE example_data ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', book_id VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'book_id', book_name VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'book_name', isbn_no VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'isbn_no', cate_id VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'cate_id', aut_id VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'aut_id', pub_id VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'pub_id', dt_of_pub VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'dt_of_pub', pub_lang VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'pub_lang', no_page VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'no_page', book_price VARCHAR(30) NOT NULL DEFAULT '' COMMENT 'book_price', PRIMARY KEY (id) ) COMMENT='素材表'
放入数据
INSERT INTO example_data VALUES(NULL,"BK001","Introduction to Electrodynamics","0000979001","CA001","AUT001","P003","2001-05-08","English","201","85.00");
分组查询
查询语句
mysql> SELECT pub_id,GROUP_CONCAT(CATE_ID) -> FROM book_mast -> GROUP BY pub_id; +--------+-----------------------+ | pub_id | GROUP_CONCAT(CATE_ID) | +--------+-----------------------+ | P001 | CA002,CA004 | | P002 | CA003,CA003 | | P003 | CA001,CA003 | | P004 | CA005,CA002 | | P005 | CA001,CA004 | | P006 | CA005,CA001 | | P007 | CA005,CA002 | | P008 | CA005,CA004 | +--------+-----------------------+ 8 rows in set (0.02 sec)
分组并去重
查询语句
mysql> SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id) -> FROM book_mast -> GROUP BY pub_id -> ORDER BY GROUP_CONCAT(DISTINCT cate_id) ASC; +--------+--------------------------------+ | pub_id | GROUP_CONCAT(DISTINCT cate_id) | +--------+--------------------------------+ | P003 | CA001,CA003 | | P005 | CA001,CA004 | | P001 | CA002,CA004 | | P002 | CA003 | | P006 | CA005,CA001 | | P004 | CA005,CA002 | | P007 | CA005,CA002 | | P008 | CA005,CA004 | +--------+--------------------------------+ 8 rows in set (0.00 sec)
分组并去重、定制分隔符
查询语句
mysql> SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id -> ORDER BY cate_id ASC SEPARATOR ' ') -> FROM book_mast -> GROUP BY pub_id ; +--------+--------------------------------------------------------------------+ | pub_id | GROUP_CONCAT(DISTINCT cate_id ORDER BY cate_id ASC SEPARATOR ' ') | +--------+--------------------------------------------------------------------+ | P001 | CA002 CA004 | | P002 | CA003 | | P003 | CA001 CA003 | | P004 | CA002 CA005 | | P005 | CA001 CA004 | | P006 | CA001 CA005 | | P007 | CA002 CA005 | | P008 | CA004 CA005 | +--------+--------------------------------------------------------------------+ 8 rows in set (0.00 sec)
分组并去重、排序、制定分割符号
查询语句
mysql> SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id -> ORDER BY cate_id ASC SEPARATOR ' ') -> FROM book_mast -> GROUP BY pub_id ; +--------+--------------------------------------------------------------------+ | pub_id | GROUP_CONCAT(DISTINCT cate_id ORDER BY cate_id ASC SEPARATOR ' ') | +--------+--------------------------------------------------------------------+ | P001 | CA002 CA004 | | P002 | CA003 | | P003 | CA001 CA003 | | P004 | CA002 CA005 | | P005 | CA001 CA004 | | P006 | CA001 CA005 | | P007 | CA002 CA005 | | P008 | CA004 CA005 | +--------+--------------------------------------------------------------------+ 8 rows in set (0.00 sec)