group by后取第一条数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014508939/article/details/81660636

       因为在mysql的查询语句顺序上会有先后,先执行group by之后才会执行order by,所以对于以下这种数据:

 我的sql语句是这样写的:

SELECT act_goods.goods_id,goods.goods_name,act_goods.act_price  FROM nata_activity_goods act_goods 
LEFT JOIN shopping_goods goods ON goods.id=act_goods.goods_id 
LEFT JOIN shopping_goods_sku sku ON sku.goods_id=goods.id AND sku.id=act_goods.sku_id

ORDER BY act_goods.act_price DESC 

想获取最低的价格(光标所示)进行group  所以在sql语句order by 之前加上了GROUP BY act_goods.goods_id  但是由于顺序问题导致不会先进行排序在进行group by  所以后来对语句进行了修改,如下:

SELECT b.goods_id,b.goods_name,b.price FROM nata_activity_goods act_goods,(SELECT MIN(act_goods.act_price) AS price,act_goods.goods_id,g.goods_name FROM nata_activity_goods act_goods LEFT JOIN shopping_goods g ON g.id=act_goods.goods_id GROUP BY act_goods.goods_id) b
WHERE  act_goods.goods_id=b.goods_id AND act_goods.sku_id IS NOT NULL GROUP BY b.goods_id
 

猜你喜欢

转载自blog.csdn.net/u014508939/article/details/81660636
今日推荐