GROUP-带您了解MySQL (group-living)

教程大全 2025-07-15 05:06:59 浏览

MySQL GROUP_CONCAT函数是非常重要的函数,MySQL GROUP_CONCAT函数在MySQL 4.1 中被加入,下面就对该函数的语法进行详细介绍。

MySQL GROUP_CONCAT(expr)完整句法如下: GROUP_CONCAT([DISTINCT] expr [,expr …][ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]][SEPARATOR str_val])

MySQL GROUP_CONCAT函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成: mysql> SELECT student_name,-> GROUP_CONCAT(test_sCore)-> from student-> GROUP BY student_name;ormysql> 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() 有一个缺省的排序次序。

如果分组的字符过长,可以对系统参数进行设置

SET @@global.group_concat_max_len=40000;

【编辑推荐】

带您深入了解MYSQL Cast函数

带您了解mysql CONCAT()函数

查看三种MySQL字符集的方法

修改mysql默认字符集的方法


复杂sql语句

语句(假设你的系统取日期月份的函数MONTH): SELECT MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1 产生的结果是: 1 23 2 10 3 45 如果你计算每个月度(、、……)的注册人数,应该使用下面的语句(假设你的系统取日期年度的函数是YEAR): SELECT YEAR(注册日期)+ +MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1 假如你的系统连接字符串不是使用+,那换为相应的字符或者函数,比如INFORMIX是使用YEAR(注册日期)||MONTH(注册日期),比如MYSQL是使用CONCATE函数 补充: SELECT语句的教材专门有聚合函数那一章,你仔细看看吧。 在SELECT语句里面,GROUP子句配合SUM,AVG,MAX,MIN等函数完成分类统计功能,执行我的两个语句,查看输出的结果,你就知道GROUP的含义,下面取一个最简单的例子: “SELECT COUNT(*) FROM 表”这个SQL语句返回的结果只有一个,就是数据库中的总记录条数,如果我们想统计不同用户名的分组进行汇总的记录条数,就应该在SELECT后增加一个字段,同事GROUP BY这个字段,完整的语句是: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名 这个语句也可以这样写: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 1 这时候GROUP BY后面的整数表示按照相应序号的SELECT列分组,这里的1表示第一个的选择结果“用户名”。 如果我们想按用户分组查记录数,但是只现实有重复的记录,那么用GROUP BY的一个HAVING修饰,完整语句如下: SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名 HAVING COUNT(*)>1

sql语言多表查询

GROUP

1.查询有不及格成绩的学生姓名 select studName from T_stud join T_select on T_ = T_ where score < 60 2.查询有选课的学生姓名和选课数量 select studName,count(*) from T_stud right join (select studNo,count(*)from T_select where 1=1 having count(*) > 0group by studNo ) as A on T_ = 3.查询选修了60岁以上老师所教课程的所有学生 select distinct from ( select ,,teacherNofrom ( select studNo,studName,subNofrom T_stud join T_selecton T_ = T_ ) as Ajoin T_Sub on T_ = ) as Bjoin T_teacher on T_ = where T_ > 60 4.洪七公老师的学生中,考试不及格的人数(姓名列表) select distinct from ( select ,,teacherNofrom ( select studNo,studName,subNofrom T_stud join T_selecton T_ = T_ T_ < 60 ) as Ajoin T_Sub on T_ = ) as Bjoin T_teacher on T_ = where T_ like 洪七公 5.洪七公老师教的学生列表以及选修的课程 select , from ( select ,,teacherNo,subNamefrom ( select studNo,studName,subNofrom T_stud join T_selecton T_ = T_ T_ < 60 ) as Ajoin T_Sub on T_ = ) as Bjoin T_teacher on T_ = where T_ like 洪七公 6.所有大于50岁老师姓名列表 select teacherName from T_teacher where teacherAge > 50 7.郭靖的课程平均分 select avg(score) from T_stud join T_select on T_ = T_ where studName like 郭靖 8.王语嫣所选课程名称列表 select subName from (select subNofrom T_stud join T_selecton T_ = T_ studName like 王语嫣) as A join T_Sub on T_ = 9.选修学生最多的课程(这里没有考虑同时多门课程的选修数相等的情况) select subName from (select TOP(1) subNo,count(*)from T_seleCTGroup by subNo order by subNo desc ) as A join T_Sub on T_ = 10.所教学生最多的老师 其他的没时间了,你自己去试着写写吧。 。 。

oracle数据库sql命令怎么改

oracle中修改数据用update语句。语法:UPDATE 表名 SET 字段=XXX WHERE 条件;如,数据库中,test表数据如下:现在要将王五的名字改成王九,可用如下语句:update test set where;commit;执行后结果:

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐