Rumah > pangkalan data > tutorial mysql > mysql数据分组和排序及SELECT子句顺序

mysql数据分组和排序及SELECT子句顺序

巴扎黑
Lepaskan: 2017-05-09 13:50:00
asal
2440 orang telah melayarinya

mysql分组和排序

虽然 GROUP BY 和 ORDER BY 经常完成相同的工作,但它们是非常不同的。下表汇总了它们之间的差别。

QQ截图20170509132019.png

表中列出的第一项差别极为重要。我们经常发现用 GROUP BY 分组的数据确实是以分组顺序输出的。但情况并不总是这样,它并不是SQL规范所要求的。此外,用户也可能会要求以不同于分组的顺序排序。仅因为你以某种方式分组数据(获得特定的分组聚集值),并不表示你需要以相同的方式排序输出。应该提供明确的 ORDER BY 子句,即使其效果等同于 GROUP BY子句也是如此。

不要忘记 ORDER BY :一般在使用 GROUP BY 子句时,应该也给出 ORDER BY 子句。这是保证数据正确排序的唯一方法。千万不要仅依赖 GROUP BY 排序数据。为说明 GROUP BY 和 ORDER BY 的使用方法,请看一个例子。下面的

SELECT 语句类似于前面那些例子。它检索总计订单价格大于等于 50 的订单的订单号和总计订单价格:

输入:

select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50;
Salin selepas log masuk

输出:

QQ截图20170509132243.png

为按总计订单价格排序输出,需要添加 ORDER BY 子句,如下所示:

输入:

select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50 order by ordertotal;
Salin selepas log masuk

输出:

QQ截图20170509132409.png

分析:在这个例子中, GROUP BY 子句用来按订单号( order_num 列)分组数据,以便 SUM(*) 函数能够返回总计订单价格。 HAVING 子句过滤数据,使得只返回总计订单价格大于等于 50 的订单。最后,用 ORDER BY 子句排序输出。

SELECT子句顺序

下面回顾一下 SELECT 语句中子句的顺序。表13-2以在 SELECT 语句中使用时必须遵循的次序,列出迄今为止所学过的子句。

QQ截图20170509132509.png

QQ截图20170509132517.png

【相关推荐】

  1. mysql数据分组:创建分组

  2. mysql数据分组:过滤分组

Atas ialah kandungan terperinci mysql数据分组和排序及SELECT子句顺序. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan