您的位置:首页 > 数据库 > MySQL

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;

若已经设置了最大长度, 则结果被截至这个最大长度。

项目实例:利用函数重排表
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: