MYSQL数据库MySQL高级查询之与Group By集合使用介绍
《MYSQL数据库MySQL高级查询之与Group By集合使用介绍》要点: 1?GROUP_CONCATMYSQL数据库 mysql>?SELECT student_name, Or:MYSQL数据库 mysql>?SELECT student_name, 在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数据库 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Sql — CTE公用表表达式和With用法总结
- MYSQL求过去9天的相同时刻的平均值的SQL语句(去掉最大值,最
- Mysql入门MySQL压力测试方法 如何使用mysqlslap测试MySQL的
- LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包
- MYSQL使用参数化查询防止SQL注入漏洞
- mysql – Sequelize TypeError build.save不是一个函数
- MYSQL教程MYSQL错误:Can’t open file: ‘×××.MYI’ (e
- Mysql入门Ubuntu下MySQL中文乱码的问题解决
- Mysql实例MySQL PXC构建一个新节点只需IST传输的方法(推荐)
- mysql – Laravel 5.1雄辩的关系模型 – 如何更新外键列?