mysql group by order_mysql中group by之后order by并不总是有效的?

我们以ecshop中的goods表来说明

① 比如我们执行这么一条sql:

select cat_id,max(shop_price) from goods group by cat_id order by shop_price desc;

mysql group by order_mysql中group by之后order by并不总是有效的?_第1张图片

这个结果也许有点诡异,怎么没有按shop_price降序排列呢?

查询出来的结果中max(shop_price)虽然和表上的数据是一样的,但它并不代表某个具体商品的价格,比如栏目5下有3个3700元的商品,那么栏目5下这个最贵商品价格3700元是哪个商品的价格呢?

所以 max(shop_price) 列的值就是代表每个栏目下最贵的商品,和表中每个商品的价格没有一一对应的关系,而order by shop_price desc是按表中商品的价格降序排列的,所以在上面的查询结果集中并看不出排序的效果(看不出排序的效果,不是说排序没有效果)

我们再看看商品表按价格降序排列是什么效果:

select cat_id,goods_id,goods_name,shop_price from goods order by shop_price desc;

mysql group by order_mysql中group by之后order by并不总是有效的?_第2张图片

你可能感兴趣的:(mysql,group,by,order)