MySQL____函数相关____ing
2015-10-13 10:47
567 查看
目录
12.1.操作符
12.1.1.操作符优先级
12.1.2.圆括号
12.1.3.比较函数和操作符
12.1.4.逻辑操作符
12.2.控制流程函数
12.3.字符串函数
12.3.1.字符串比较函数
12.4.数值函数
12.4.1算术操作符
12.4.2.数学函数
12.5.日期和时间函数
12.6.MySQL使用什么日历?
12.7.全文搜索功能
12.7.1.布尔全文搜索
12.7.2.全文搜索带查询扩展
12.7.3.全文停止字
12.7.4.全文限定条件
12.7.5.微调MySQL全文搜索
12.8.Cast函数和操作符
12.9.其他函数
12.9.1.位函数
12.9.2.加密函数
12.9.3.信息函数
12.9.4.其他函数
12.10.与GROUP BY子句同时使用的函数和修改程序
12.10.1.GROUP BY(聚合)函数
12.10.2.GROUP BY修改程序
12.10.3.具有隐含字段的GROUP BY
12.10.与GROUP BY子句同时使用的函数和修改程序
12.10.1.GROUP BY(聚合)函数
前阵子项目刚刚用到:
GROUP_CONCAT(expr)
该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;
Or:
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
在MySQL中,你可以获取表达式组合的连接值。你可以使用DISTINCT删去重复值。假若你希望多结果值进行排序,则应该使用 ORDER BY子句。若要按相反顺序排列,将 DESC (递减) 关键词添加到你要用ORDER BY 子句进行排序的列名称中。默认顺序为升序;可使用ASC将其明确指定。 SEPARATOR 后面跟随应该被插入结果的值中间的字符串值。默认为逗号 (‘,’)。通过指定SEPARATOR '' ,你可以删除所有分隔符。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。
项目实例:利用函数重排表
12.10.2.GROUP BY修改程序
12.10.3.具有隐含字段的GROUP BY
12.1.操作符
12.1.1.操作符优先级
12.1.2.圆括号
12.1.3.比较函数和操作符
12.1.4.逻辑操作符
12.2.控制流程函数
12.3.字符串函数
12.3.1.字符串比较函数
12.4.数值函数
12.4.1算术操作符
12.4.2.数学函数
12.5.日期和时间函数
12.6.MySQL使用什么日历?
12.7.全文搜索功能
12.7.1.布尔全文搜索
12.7.2.全文搜索带查询扩展
12.7.3.全文停止字
12.7.4.全文限定条件
12.7.5.微调MySQL全文搜索
12.8.Cast函数和操作符
12.9.其他函数
12.9.1.位函数
12.9.2.加密函数
12.9.3.信息函数
12.9.4.其他函数
12.10.与GROUP BY子句同时使用的函数和修改程序
12.10.1.GROUP BY(聚合)函数
12.10.2.GROUP BY修改程序
12.10.3.具有隐含字段的GROUP BY
12.10.与GROUP BY子句同时使用的函数和修改程序
12.10.1.GROUP BY(聚合)函数
前阵子项目刚刚用到:
GROUP_CONCAT(expr)
该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;
Or:
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
在MySQL中,你可以获取表达式组合的连接值。你可以使用DISTINCT删去重复值。假若你希望多结果值进行排序,则应该使用 ORDER BY子句。若要按相反顺序排列,将 DESC (递减) 关键词添加到你要用ORDER BY 子句进行排序的列名称中。默认顺序为升序;可使用ASC将其明确指定。 SEPARATOR 后面跟随应该被插入结果的值中间的字符串值。默认为逗号 (‘,’)。通过指定SEPARATOR '' ,你可以删除所有分隔符。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。
项目实例:利用函数重排表
SELECT NAME,GROUP_CONCAT(CASE WHEN class='C1' THEN score END) AS c1, GROUP_CONCAT(CASE WHEN class='C2' THEN score END) AS c2, GROUP_CONCAT(CASE WHEN class='C3' THEN score END) AS c3,GROUP_CONCAT(CASE WHEN class='C4' THEN score END) AS c4 FROM grouptest GROUP BY NAME 表包含3个字段:name,score,class。将表的内容重新排成name c1 c2 c3 c4。c1等中存c1课程的分数 name存学生姓名。
12.10.2.GROUP BY修改程序
12.10.3.具有隐含字段的GROUP BY
相关文章推荐
- Mysql 数据库之常用命令[更新中...]
- mysqldump备份与还原数据操作
- MySQL数据的主从复制、半同步复制和主主复制详解-转
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限(重要)
- mysqlnd一个很不错的驱动
- 查看 MySQL 数据库中每个表占用的空间大小
- MySQL安全问题(防范必知)
- MySQL中information_schema数据库简介
- MySQL性能优化之table_cache配置参数浅析
- mysql1449 The user specified as a definer ('root'@'%') does not exist 解决方法
- 分享一个不错的mysql语句
- mysql 表字段避免null 会带来额外的开销
- mysql保留字-关键字表
- mysql存储过程和触发器的应用
- mysql5.5以上编译方法
- 手动编译MySQL
- mysql启动失败!!
- MySQL常用操作
- mysql high availability 概述
- [转载] 淘宝内部分享:怎么跳出MySQL的10个大坑(上)