不得不记录的 Mysql 使用方法

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;

利用 with rollup 额外生成聚合数据的高聚集

GROUP BY子句允许一个将额外行添加到简略输出端 WITH ROLLUP 修饰符。这些行代表高层(或高聚集)简略操作。ROLLUP 因而允许你在多层分析的角度回答有关问询的问题。例如,它可以用来向OLAP (联机分析处理) 操作提供支持。

相关文档:

http://dev.mysql.com/doc/refman/5.1/zh/functions.html#group-by-modifiers

CREATE PROCEDURE和CREATE FUNCTION

相关文档:

http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
CREATE FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body
    proc_parameter:
    [ IN | OUT | INOUT ] param_name type
    func_parameter:
    param_name type
type:
    Any valid MySQL data type
characteristic:
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'
routine_body:
    Valid SQL procedure statement or statements