关于Mysql group_concat的应用(把相同ID的VAL用字符‘/‘连接起来)

关于Mysql group_concat的应用

■事先准备:

CREATE TABLE TBL_GRP_CAT (

ID INT,

VAL CHAR

);

INSERT INTO TBL_GRP_CAT VALUES(1, ‘a‘);

INSERT INTO TBL_GRP_CAT VALUES(1, ‘b‘);

INSERT INTO TBL_GRP_CAT VALUES(1, ‘c‘);

INSERT INTO TBL_GRP_CAT VALUES(2, ‘d‘);

INSERT INTO TBL_GRP_CAT VALUES(2, ‘e‘);

INSERT INTO TBL_GRP_CAT VALUES(2, ‘d‘);

INSERT INTO TBL_GRP_CAT VALUES(2, ‘f‘);

mysql> select * from TBL_GRP_CAT;

+------+------+

| ID   | VAL  |

+------+------+

|    1 | a    |

|    1 | b    |

|    1 | c    |

|    2 | d    |

|    2 | e    |

|    2 | d    |

|    2 | f    |

+------+------+

7 rows in set (0.00 sec)

mysql>

■语法:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符‘])

■示例

示例1:把相同ID的VAL用逗号连接起来(可以重复)

SELECT ID, group_concat(VAL) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

mysql> SELECT ID, group_concat(VAL) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID

;

+------+---------+

| ID   | VAL     |

+------+---------+

|    1 | a,b,c   |

|    2 | d,e,d,f |

+------+---------+

2 rows in set (0.00 sec)

mysql>

示例2:把相同ID的VAL用逗号连接起来(不含重复)

SELECT ID, group_concat(DISTINCT VAL) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

mysql> SELECT ID, group_concat(DISTINCT VAL) VAL FROM TBL_GRP_CAT GROUP BY ID OR

DER BY ID;

+------+-------+

| ID   | VAL   |

+------+-------+

|    1 | a,b,c |

|    2 | d,e,f |

+------+-------+

2 rows in set (0.00 sec)

mysql>

示例3:把相同ID的VAL由大到小用逗号连接起来(可以重复)

SELECT ID, group_concat(VAL Order BY VAL DESC) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

mysql> SELECT ID, group_concat(VAL Order BY VAL DESC) VAL FROM TBL_GRP_CAT GROU

BY ID ORDER BY ID;

+------+---------+

| ID   | VAL     |

+------+---------+

|    1 | c,b,a   |

|    2 | f,e,d,d |

+------+---------+

2 rows in set (0.00 sec)

mysql>

示例4:把相同ID的VAL用字符‘/‘连接起来(可以重复)

SELECT ID, group_concat(VAL Separator ‘/‘) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

mysql> SELECT ID, group_concat(VAL Separator ‘/‘) VAL FROM TBL_GRP_CAT GROUP BY

ID ORDER BY ID;

+------+---------+

| ID   | VAL     |

+------+---------+

|    1 | a/b/c   |

|    2 | d/e/d/f |

+------+---------+

2 rows in set (0.00 sec)

mysql>

示例5:权使用

SELECT ID, group_concat(DISTINCT VAL Order BY VAL DESC Separator ‘/‘) VAL FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

mysql> SELECT ID, group_concat(DISTINCT VAL Order BY VAL DESC Separator ‘/‘) VAL

FROM TBL_GRP_CAT GROUP BY ID ORDER BY ID;

+------+-------+

| ID   | VAL   |

+------+-------+

|    1 | c/b/a |

|    2 | f/e/d |

+------+-------+

2 rows in set (0.00 sec)

mysql>

在Oracle(Listagg),Sqlite(group_concat)等均有类似功能。

时间: 2024-10-16 05:05:43

关于Mysql group_concat的应用(把相同ID的VAL用字符‘/‘连接起来)的相关文章

group_concat('fanme')函数 group by id 把分组后的fname 都查出来 结果以 ""张三,李四,王五""

group_concat函数详解 博客分类: SQL MySQLSQL 问了好多人,都不知道group_concat这个函数. 这个函数好啊,能将相同的行组合起来,省老事了. MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 Sql代码   select * from aa; +------+------+| id| name

MySQL GROUP_CONCAT()的使用

1. MySQL GROUP_CONCAT() mysql> SELECT pub_id,GROUP_CONCAT(cate_id) -> FROM book_mast -> GROUP BY pub_id; 返回结果:(默认逗号分隔) +--------+-----------------------+| pub_id | GROUP_CONCAT(cate_id) |+--------+-----------------------+| P001 | CA002,CA004 | |

mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格

mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格 MemberID MemberName FruitName -------------- --------------------- -------------- 1 Al Apple 1 Al Cherry Desired output MemberID MemberName FruitName ----------- -------------- ------------ 1 Al Apple, Cherry

MYSQL group_concat() 函数

看来看一下表中的数据 select * from t; 下一步来看一下group_concat函数的用法 select ID,group_concat(Name) from t group by ID; 如果要消除重复项可以加distinct select ID,group_concat(distinct Name) from t group by ID; 如果还排序可以这样 select ID,group_concat(name order by name desc) from t group

解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id 1 2 3 4 现在删除4,就变成了 1 2 3 这时候,如果增加一条数据,会变成 1 2 3 5 上面5不是我们想要的结果,4才是理想的id,解决方法是,在删除4之后,执行下面的sql语句: ALTER TABLE table_name AUTO_INCREMENT = 1; 原文地址:http

mysql中explain输出列之id的用法详解

参考mysql5.7 en manual,对列id的解释: The SELECT identifier. This is the sequential number of the SELECT within the query. The value can be NULL if the row refers to the union result of other rows. In this case, the table column shows a value like <unionM,N>

mysql中添加一个和root一样的用户用于远程连接

mysql中添加一个和root一样的用户用于远程连接: 大家在拿站时应该碰到过.root用户的mysql,只可以本地连,对外拒绝连接. 下面语句添加一个新用户administrtor: CREATE USER 'monitor'@'%' IDENTIFIED BY 'admin'; GRANT ALL PRIVILEGES ON *.* TO 'monitor'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0

mysql GROUP_CONCAT+ GROUP BY + substring_index获取分组的前几名

mysql方法来源于:http://www.cnblogs.com/jjcc/p/5896588.html ###在网上看到一篇,非常赞的方法 比如说要获取班级的前3名,mysql就可以用GROUP_CONCAT  + GROUP BY + substring_index实现. 考试表 DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (`id` int(11) DEFAULT NULL,`name` varchar(20) DEFAULT NULL

mysql group_concat用法

MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 Sql代码   select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+---