• ADADADADAD

    mysql函数中的GROUP_CONCAT是怎样用的[ mysql数据库 ]

    mysql数据库 时间:2024-11-25 18:01:08 热度:1℃

    作者:文/会员上传 下载docx

    简介:

    mysql函数之——GROUP_CONCAT完整句法如下: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]][SEPAR

    以下为本文的正文内容,请查阅,本站为公益性网站,复制本文以及下载DOC文档全部免费。

    mysql函数之——GROUP_CONCAT
    完整句法如下:
    GROUP_CONCAT([DISTINCT] expr [,expr ...]
    [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
    [SEPARATOR str_val])

    这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成:
    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 子句。为了以倒序排序,可以在 ORDER BY 子句中用于排序的列名后添加一个 DESC (递减 descending) 关键词。缺省为升序;这也可以通过使用 ASC 关键词明确指定。 SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (",")。你可以通过指定 SEPARATOR "" 完全地移除这个分隔符。 在你的配置中,通过变量 group_concat_max_len 要以设置一个最大的长度。在运行时执行的句法如下:
    SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;

    如果最大长度被设置,结果值被剪切到这个最大长度。 GROUP_CONCAT() 函数是一个增强的 Sybase SQL Anywhere 支持的基本 LIST() 函数。如果只有一个列,并且没有其它选项被指定,GROUP_CONCAT() 是向后兼容有极大限制的 LIST() 函数。 LIST() 有一个缺省的排序次序。
    示例(译者注):

    mysql> CREATE TABLE `ta` (
    -> `id` smallint(5) unsigned NOT NULL default '0',
    -> `name` char(60) NOT NULL default '',
    -> KEY `id` (`id`)
    -> ) TYPE=MyISAM;
    Query OK, 0 rows affected (0.02 sec)

    mysql> INSERT INTO `ta` VALUES("1", "a"),("1", "b"),
    -> ("1", "c"),("1", "d"),("2", "a"),
    -> ("2", "b"),("2", "c"),("3", "d");
    Query OK, 8 rows affected (0.03 sec)
    Records: 8 Duplicates: 0 Warnings: 0

    mysql> SELECT * FROM `ta`;
    +----+------+
    | id | name |
    +----+------+
    | 1 | a |
    | 1 | b |
    | 1 | c |
    | 1 | d |
    | 2 | a |
    | 2 | b |
    | 2 | c |
    | 3 | d |
    +----+------+
    8 rows in set (0.00 sec)

    mysql> SELECT `id`,
    -> GROUP_CONCAT(`name`)
    -> FROM `ta`
    -> GROUP BY `id`;
    +----+----------------------+
    | id | GROUP_CONCAT(`name`) |
    +----+----------------------+
    | 1 | a c b d |
    | 2 | a c b |
    | 3 | d |
    +----+----------------------+
    3 rows in set (0.03 sec)

    # SEPARATOR 缺省是一个空格而不是一个逗号

    mysql> SELECT `id`,
    -> GROUP_CONCAT(DISTINCT `name`
    -> ORDER BY `name` DESC SEPARATOR ",") AS Result
    -> FROM `ta`
    -> GROUP BY `id`;
    +----+---------+
    | id | Result |
    +----+---------+
    | 1 | d,c,b,a |
    | 2 | c,b,a |
    | 3 | d |
    +----+---------+
    3 rows in set (0.00 sec)

    * 以上结果在 MySQL 4.1 中测试

    mysql函数中的GROUP_CONCAT是怎样用的.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlgroupconcat
    ADADAD