用集合来介绍mysql高级查询
MySQL >选择student_name,
-> group_concat(test_score)
从学生
组-> student_name;
或:
MySQL >选择student_name,
(不同group_concat test_score ->
为了test_score DESC分离器- >)
从学生
组-> student_name;
在MySQL,你可以得到表达式的组合连接的价值。你可以使用不同的删除重复值。如果你想多结果进行排序,你应该使用的条款顺序。如果你想在相反的顺序,添加描述(递减)的列名称,你想用ORDERBY子句排序关键字。默认为升序;您可以明确地指定它与asc.separator如下一个字符串值,在价值中应插入结果。默认是逗号(',')。通过指定分隔符,您可以删除所有分离器。
PS:结合各子值的物品,可聚合的集团在一份声明中的价值
2汇总
GROUPBY子句可以被添加到与ROLLUP修饰符在简短的输出端附加的线。这些线代表高水平(或聚集)简单的operation.rollup因此可以回答关于在多角度分析问题
或者你可以使用汇总,可提供双水平分析一个问题。添加的语句组汇总修改使得查询产生另一个结果,这说明所有的年总价值:
MySQL >选择年总和(利润)从销售团队的年度汇总;
------ ------------- + + +
| |年总和(利润)|
------ ------------- + + +
| 2000 | 4525 |
| 2001 | 3010 |
|空| 7535 |
------ ------------- + + +
总高度为年栏空标记。
当有多个组列,卷起的效应更为复杂。在这个时候,每一次打破(价值变化)显得比其他任何一列列列,查询产生的高聚集、累积行。
例如,在汇总的情况下,一个销售表的基础上,列出的国家,和产品可能如下所示:
选择年份、国家、产品、金额(利润)
从-销售
按年份>集团、国家、产品;
+ + + + ------ --------- ------------ ------------- +
年国家产品| | | |总和(利润)|
+ + + + ------ --------- ------------ ------------- +
| 2000 |芬兰|计算机| 1500 |
| 2000 |芬兰|电话| 100 |
| 2000 |印度|计算器| 150 |
| 2000 |印度|计算机| 1200 |
| 2000 |美国|计算器| 75 |
| 2000 |美国|计算机| 1500 |
| 2001 |芬兰|电话| 10 |
| 2001 |美国|计算器| 50 |
| 2001 |美国|计算机| 2700 |
| 2001 |美国|电视| 250 |
+ + + + ------ --------- ------------ ------------- +
总价值的输出结果只在年度/国家/产品分析水平。当汇总添加,查询产生一些额外的线:
选择年份、国家、产品、金额(利润)
从-销售
年->集团、国产品汇总;
+ + + + ------ --------- ------------ ------------- +
年国家产品| | | |总和(利润)|
+ + + + ------ --------- ------------ ------------- +
| 2000 |芬兰|计算机| 1500 |
| 2000 |芬兰|电话| 100 |
| 2000 |芬兰|空| 1600 |
| 2000 |印度|计算器| 150 |
| 2000 |印度|计算机| 1200 |
| 2000 |印度|空| 1350 |
| 2000 |美国|计算器| 75 |
| 2000 |美国|计算机| 1500 |
| 2000 |美国|空| 1575 |
| 2000 |空|空| 4525 |
| 2001 |芬兰|电话| 10 |
| 2001 |芬兰|空| 10 |
| 2001 |美国|计算器| 50 |
| 2001 |美国|计算机| 2700 |
| 2001 |美国|电视| 250 |
| 2001 |美国|空| 3000 |
| 2001 |空|空| 3010 |
空空空| | | | 7535 |
+ + + + ------ --------- ------------ ------------- +
当你使用汇总,你不能排序结果与ORDERBY子句同时。换句话说,汇总和秩序是相互排斥的。但是,你仍然可以在一种控制。在MySQL,集团可排序的结果,你可以在列表中指定的组列表中使用显式的ASC和DESC关键字,以便排序单个列。(不管如何向更高层次的总线,通过汇总,添加排序行仍出现后,他们已计算出的线)。
限制可以被用来限制返回的行数的client.limit用于后面的汇总,所以这个限制将取消,由汇总添加线条