mysql将查询结果集用逗号拼接,按首字母排序

mysql将查询结果集用,拼接,按首字母排序

1.创建表,添加数据

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for activities
-- ----------------------------
DROP TABLE IF EXISTS `activities`;
CREATE TABLE `activities`  (
  `sell_date` date NULL DEFAULT NULL,
  `product` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of activities
-- ----------------------------
INSERT INTO `activities` VALUES ('2020-05-30', 'Headphone');
INSERT INTO `activities` VALUES ('2020-06-01', 'Pencil');
INSERT INTO `activities` VALUES ('2020-06-02', 'Mask');
INSERT INTO `activities` VALUES ('2020-05-30', 'Basketball');
INSERT INTO `activities` VALUES ('2020-06-01', 'Bible');
INSERT INTO `activities` VALUES ('2020-06-02', 'Mask');
INSERT INTO `activities` VALUES ('2020-05-30', 'T-Shirt');

SET FOREIGN_KEY_CHECKS = 1;

2.要求
编写一个 SQL 查询来查找每个日期、销售的不同产品的数量及其名称。
每个日期的销售产品名称应按词典序排列。
返回按 sell_date 排序的结果表。

3.sql语句
group_concat(product ORDER BY CONVERT(product USING GBK) asc:将product 用逗号拼接,按首字母排序

SELECT sell_date,count(DISTINCT product) num_sold ,group_concat(DISTINCT product  ORDER BY CONVERT(product USING GBK) asc) product FROM `activities` GROUP BY sell_date

4.结果
在这里插入图片描述

MySQL中,可以使用GROUP_CONCAT函数对查询结果进行逗号拼接。 GROUP_CONCAT函数用于将多个行的某一列的值连接起来。可以使用它来拼接字符串,用逗号将多个值分隔开。 例如,假设有一个名为students的表,包含字段id和name。如果要查询出所有学生的姓名,并将姓名用逗号拼接在一起,可以使用以下SQL语句: SELECT GROUP_CONCAT(name) FROM students; 执行上述语句后,将返回一个包含所有学生姓名的字符串,各个姓名用逗号分隔开。 如果要按照某个字段进行分组,并对每个组内的值进行拼接,可以使用GROUP BY子句。例如,如果要按照学生的年级进行分组,并对每个年级的学生姓名进行拼接,可以使用以下SQL语句: SELECT grade, GROUP_CONCAT(name) FROM students GROUP BY grade; 执行上述语句后,将返回一个包含每个年级的学生姓名拼接结果结果。 需要注意的是,GROUP_CONCAT函数有默认的最大长度限制。如果要拼接的值超过了默认长度限制,可以使用GROUP_CONCAT函数的SEPARATOR参数来指定分隔符。例如,可以使用以下SQL语句将姓名拼接起来,并以竖线作为分隔符: SELECT GROUP_CONCAT(name SEPARATOR '|') FROM students; 执行上述语句后,将返回一个使用竖线作为分隔符的学生姓名拼接结果的字符串。 总之,使用GROUP_CONCAT函数可以方便地将查询结果进行逗号拼接。通过指定分隔符和使用GROUP BY子句,还可以对分组结果进行拼接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值