Mysqlselect a, group_concat(b separator ',')from tablegroup by aPrestoselect a, array_join(array_agg(b), ',')from tablegroup by aRedshiftselect a, listagg(b, ',')from table...
语法
:
GROUP
_
CONCAT
([DISTINCT] expr [,expr …][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name …]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。 SQL代码 复制代码 代码如下:CREATE TABLE student_courses ( student_id INT UNSIGNED NOT NULL, courses_id INT UN
比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高到底排序。
可以这样写:
SELECT username,
GROUP
_
CONCAT
(score ORDER BY score DESC) AS myScore FROM t1
GROUP
BY username;
效果如下:
以上这篇浅谈
MySQL
中
group
_
concat
()函数的排序方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
一个很有用的函数
group
_
concat
(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。
通俗点理解,其实是这样的:
group
_
concat
()会计算哪些行属于同一组,将属于同一组的列合并显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据
group
by指定的列进行分组。
合并的字段分隔符默认为逗号,可通过参数separator指定。
比如在student表
中
,有如下5条数据:
有要求如下:“小明”的两行成绩可以放在一行展示,“小红”的两行成绩也放在一行展示!
那么就可以使用
SELECT n
MySQL
中
group
_
concat
函数,完整的
语法
如下: 代码如下:
group
_
concat
([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
代码如下:select * from aa;
代码如下:+——+——+| id| name |+——+——+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200 ||3 | 500 |+——+——+6 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔(默认)
代码如下:select id
当过滤条件作用在分区字段上面时,可以减少数据扫描的范围,有效提升查询性能;
当
group
by的数值型字段将比字符型更节省内存空间;
还应考虑统计字段基数(某字段拥有不同值的个数),将基数大的字段放在前面
3.order by 和 limit 配合使用
order by 将所有数据放到一个worker
中
SELECT student_name,
GROUP
_
CONCAT
(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
FROM student
GROUP
BY student_name;
在
mysql
中
,有个函数叫“
group
_
concat
”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实
MYSQL
内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改
详细说明如下:
用了
group
_
concat
后,select里如果使用了limit是不起作用的.
用
group
_
concat
连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用
group
_
concat
_max_len系统变量,你可以设置允许的最大长度。
系统默认的分隔符是逗号
修改方式:
SET [SESSION | GLOBAL] g
mysql
中
,
group
_
concat
函数将
group
by产生的同一个分组
中
的值连接起来,返回一个字符串结果。当查询的数据过多时,
group
_
concat
超出了默认值1024个字符,超过就会截断,导致
group
_
concat
查询出来的数据不全。好的,这是一个容易忽视的坑。解法1:
https://www.freesion.com/article/2975170859/
http://www.javashuo.com/article/p-zqzeqcby-ws.html解法2:
不用
group
_
concat
jupyter notebook 打开ipynb时提示到后台服务的连接没能建立, 我们会继续尝试重连, 请检出网络连接...还有服务配置 命令行显示Replacing stale connection
shenmixiaog:
ubuntu18.04无法联网解决
txdxiaoxiaodan: