发现一个巨好用的神仙函数,GROUP_CONCAT,被征服了

我现在有这样一张表

CREATE TABLE `test_group_concat` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL COMMENT '用户编号',
  `sku_id` bigint(20) NOT NULL COMMENT '用户所购买的商品编号',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

  需要查出每个用户所购买的所有商品

SELECT
	user_id,
	sku_id
FROM
	test_group_concat

  查询出来的结果是这样,是不是比较丑

 

我希望每个用户只显示一次,那只能group by,但是我们都知道group by是分组函数,非分组列只能显示一条,那我如果希望将所有的sku_id都查出来怎么办呢

就可以用这个神仙函数

SELECT
	user_id,
	GROUP_CONCAT(sku_id) sku_list
FROM
	test_group_concat
GROUP BY
	user_id;

  结果就变成这样

 

 

 是不是很神奇呀~~~~~

 

还可以自定义哦~~~

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

 

posted @ 2020-04-02 20:59  张倩要好好学习  阅读(313)  评论(0编辑  收藏  举报