0
点赞
收藏
分享

微信扫一扫

SQL函数

素锦时年_1b00 2022-03-25 阅读 54
mysql

1、将一条记录中的多个表字段的值拼接并输出一个结果字段

CREATE TABLE `demo_table` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `trade_name` varchar(32) DEFAULT NULL COMMENT '商品名称',
  `type_a` int(2) DEFAULT NULL COMMENT '类型1-小类a',
  `type_b` int(2) DEFAULT NULL COMMENT '类型1-小类b',
  `type_c` int(2) DEFAULT NULL COMMENT '类型1-小类c',
  `kind_a` int(2) DEFAULT NULL COMMENT '类型2-小类a',
  `kind_b` int(2) DEFAULT NULL COMMENT '类型2-小类b',
  `kind_c` int(2) DEFAULT NULL COMMENT '类型2-小类c',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='demo';

假设存在形如上述结构的表,现在需要将商品数据,按照`type_a`,`type_b`,`type_c`字段拼接输出为结果列A,按照`kind_a`,`kind_b`,`kind_c`字段拼接输出为结果列B。

采用方法:CONCAT_WS()函数

功能:一次性指定分隔符

语法:CONCAT_WS(separator,str1,str2,...)

说明:第一个参数指定分隔符,分隔符不能为空,如果为NULL,则返回值直接为NULL

示例:

SELECT trade_name AS tradeName,
       CONCAT_WS(',',type_a,type_b,type_c) AS resultA,
       CONCAT_WS(',',kind_a,kind_b,kind_c) AS resultB
FROM demo_table

传送门:类似功能函数介绍

2、SUM 和 COUNT 函数 与 IF函数 的组合运用

#统计学生成绩大于90分的学生,姓名去重后的数量
COUNT(DISTINCT student_name ,IF(student_point > 90,TRUE,NULL))
#统计所有女同学的成绩总分
SUM(IF(student_sex = 'female',student_point,0))
举报

相关推荐

0 条评论