加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL数据库MySQL高级查询之与Group By集合使用介绍

发布时间:2020-12-12 00:53:47 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL数据库MySQL高级查询之与Group By集合使用介绍》要点: 本文介绍了MYSQL数据库MySQL高级查询之与Group By集合使用介绍,希望对您有用。如果有疑问,可以联系我们。 1? GROUP_CONCAT MYSQL数据库 mysql? SELECT student_name, ??? -????? GROUP_CONCAT

《MYSQL数据库MySQL高级查询之与Group By集合使用介绍》要点:
本文介绍了MYSQL数据库MySQL高级查询之与Group By集合使用介绍,希望对您有用。如果有疑问,可以联系我们。

1?GROUP_CONCATMYSQL数据库

mysql>?SELECT student_name,
??? ->?????GROUP_CONCAT(test_score)
??? ->?????FROM student
??? ->?????GROUP BY student_name;MYSQL数据库

Or:MYSQL数据库

mysql>?SELECT student_name,
??? ->?????GROUP_CONCAT(DISTINCT test_score
??? ->???????????????ORDER BY test_score DESC SEPARATOR ' ')
??? ->?????FROM student
??? ->?????GROUP BY student_name;MYSQL数据库

在MySQL中,你可以获取表达式组合的连接值.你可以使用DISTINCT删去重复值.假若你希望多结果值进行排序,则应该使用? ORDER BY子句.若要按相反顺序排列,将?DESC (递减)?关键词添加到你要用ORDER BY?子句进行排序的列名称中.默认顺序为升序;可使用ASC将其明确指定.?? SEPARATOR?后面跟随应该被插入结果的值中间的字符串值.默认为逗号?(‘,').通过指定SEPARATOR ''?,你可以删除所有分隔符.MYSQL数据库

PS:就是可以在一个语句中得到 GROUP BY 被 聚合的项的每个子值的一个组合的字符串MYSQL数据库

?2?WITH ROLLUPMYSQL数据库

GROUP BY子句允许一个将额外行添加到简略输出端?WITH ROLLUP?修饰符.这些行代表高层(或高聚集)简略操作.ROLLUP?因而允许你在多层分析的角度回答有关问询的问题MYSQL数据库

或者你可以使用?ROLLUP,?它能用一个问询提供双层分析.将一个?WITH ROLLUP修饰符添加到GROUP BY?语句,使询问产生另一行结果,该行显示了所有年份的总价值:MYSQL数据库

mysql>?SELECT year,SUM(profit) FROM sales GROUP BY year WITH ROLLUP;MYSQL数据库

+------+-------------+MYSQL数据库

| year | SUM(profit) |MYSQL数据库

+------+-------------+MYSQL数据库

| 2000 |??????? 4525 |MYSQL数据库

| 2001 |??????? 3010 |MYSQL数据库

| NULL |??????? 7535 |MYSQL数据库

+------+-------------+MYSQL数据库

总计高聚集行被年份列中的NULL值标出.MYSQL数据库

当有多重?GROUP BY?列时,ROLLUP产生的效果更加复杂.这时,每次在除了最后一个分类列之外的任何列出现一个 “break”?(值的改变)?,则问讯会产生一个高聚集累计行.MYSQL数据库

例如,在没有?ROLLUP的情况下,一个以年、国家和产品为基础的关于?sales?表的一览表可能如下所示:MYSQL数据库

mysql>?SELECT year,country,product,SUM(profit)MYSQL数据库

??? ->?FROM salesMYSQL数据库

??? ->?GROUP BY year,product;MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

| year | country | product??? | SUM(profit) |MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

| 2000 | Finland | Computer?? |??????? 1500 |MYSQL数据库

| 2000 | Finland | Phone????? |???????? 100 |MYSQL数据库

| 2000 | India?? | Calculator |???????? 150 |MYSQL数据库

| 2000 | India?? | Computer?? |??????? 1200 |MYSQL数据库

| 2000 | USA???? | Calculator |????????? 75 |MYSQL数据库

| 2000 | USA???? | Computer?? |?? ?????1500 |MYSQL数据库

| 2001 | Finland | Phone????? |????????? 10 |MYSQL数据库

| 2001 | USA???? | Calculator |????????? 50 |MYSQL数据库

| 2001 | USA???? | Computer?? |??????? 2700 |MYSQL数据库

| 2001 | USA???? | TV???????? |???????? 250 |MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

表示总值的输出结果仅位于年/国家/产品的分析级别.当添加了?ROLLUP后,问询会产生一些额外的行:MYSQL数据库

mysql>?SELECT year,product WITH ROLLUP;MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

| year | country | product??? | SUM(profit) |MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

| 2000 | Finland | Computer?? |??????? 1500 |MYSQL数据库

| 2000 | Finland | Phone????? |???????? 100 |MYSQL数据库

| 2000 | Finland | NULL?????? |??????? 1600 |MYSQL数据库

| 2000 | India?? | Calculator |???????? 150 |MYSQL数据库

| 2000 | India?? | Computer?? |??????? 1200 |MYSQL数据库

| 2000 | India?? | NULL?????? |??????? 1350 |MYSQL数据库

| 2000 | USA???? | Calculator |????????? 75 |MYSQL数据库

| 2000 | USA???? | Computer?? |??????? 1500 |MYSQL数据库

| 2000 | USA???? | NULL?????? |??????? 1575 |MYSQL数据库

| 2000 | NULL??? | NULL?????? |??????? 4525 |MYSQL数据库

| 2001 | Finland | Phone????? |????????? 10 |MYSQL数据库

| 2001 | Finland | NULL?????? |????????? 10 |MYSQL数据库

| 2001 | USA???? | Calculator |????????? 50 |MYSQL数据库

| 2001 | USA???? | Computer?? |??????? 2700 |MYSQL数据库

| 2001 | USA???? | TV???????? |???????? 250 |MYSQL数据库

| 2001 | USA???? | NULL?????? |????? ??3000 |MYSQL数据库

| 2001 | NULL??? | NULL?????? |??????? 3010 |MYSQL数据库

| NULL | NULL??? | NULL?????? |??????? 7535 |MYSQL数据库

+------+---------+------------+-------------+MYSQL数据库

当你使用?ROLLUP时,?你不能同时使用?ORDER BY子句进行结果排序.换言之,?ROLLUP?和ORDER BY?是互相排斥的.然而,你仍可以对排序进行一些控制.在?MySQL中,?GROUP BY?可以对结果进行排序,而且你可以在GROUP BY列表指定的列中使用明确的?ASC和DESC关键词,从而对个别列进行排序.?(不论如何排序被ROLLUP添加的较高级别的总计行仍出现在它们被计算出的行后面).MYSQL数据库

LIMIT可用来限制返回客户端的行数.LIMIT?用在?ROLLUP后面,?因此这个限制 会取消被ROLLUP添加的行MYSQL数据库

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读