我现在有这样一张表
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 '分隔符'] )