首页 新闻 搜索 专区 学院

mysql 排序 急需解决

0
悬赏园豆:20 [已关闭问题] 关闭于 2018-02-05 15:27

  现在的需求是这样的:先根据时间进行倒序排序,然后根据时间吧同一店铺的统一放在一块,并且整体移动。需求原型就是淘宝购物车,还是放个图吧

 大致意思就是先根据时间排序,吧加入的商品时间反序,同时把商品所在的店铺同时移动在前面

复制代码
SELECT
    a.*, b.SHOP_NAME,
    c.GOODS_NAME,
    c.SELLING_PRICE,
    d.FILE_SAVE_PATH
FROM
    ulm_cart a
LEFT JOIN ulm_shop b ON a.SHOP_ID = b.ID
LEFT JOIN ulm_goods c ON a.GOODS_ID = c.GOODS_ID
LEFT JOIN sys_binar_file d ON c.cover = d.FILE_ID
WHERE
    a.BUYER_ID = '40288ab1602042b80160204481cd0001'
AND b.SHOP_STATE ='001'
AND c.STATE ='001'
AND a.STATE ='001'
ORDER BY
    a.SHOP_ID ,a.CREATE_TIME DESC
复制代码

MySQL

流年煮雪的主页 流年煮雪 | 菜鸟二级 | 园豆:219
提问于:2017-12-25 10:58
< >
分享
所有回答(5)
0

大概就是根据shopid分组,再根据时间降序

青语 | 园豆:1000 (小虾三级) | 2017-12-25 11:10

求代码,也是这样想的,但是总是不合适,达不到预期

 

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-12-25 11:12

@流年煮雪: 你这个接口是要给前端用吗。

支持(0) 反对(0) 青语 | 园豆:1000 (小虾三级) | 2017-12-25 11:19

@青语: 恩恩,是的,主要涉及分页,要是直接取得话可以用程序处理,但是一分页,就不行了,第二页很尴尬

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-12-25 11:21
0

想实现啥效果?

顾晓北 | 园豆:10087 (专家六级) | 2017-12-25 11:15

如图,吧3放到1的位置 2不变,1 放到3的位置,里面的排序内容整体不变,就是每隔店铺里面的最迟的时间进行对店铺整体排序

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-12-25 11:20

@流年煮雪: 那你不是先按shop_id排序,然后再按create——time排序就行了么?

支持(0) 反对(0) 顾晓北 | 园豆:10087 (专家六级) | 2017-12-25 13:42
0

group by a.shop_id order by a.create_time,即可实现

ckx0709 | 园豆:392 (菜鸟二级) | 2017-12-25 11:39

这样昂的话就有几个店铺就是几条数据了

支持(0) 反对(0) 流年煮雪 | 园豆:219 (菜鸟二级) | 2017-12-25 12:14
0

先分组后排序,分组的先后顺序也需要按排序的来,分组后每组內也需要一个排序。oracle 有over()。mysql 我暂时想到这么写,可能效率不高

select * from test

SELECT GROUP_CONCAT(a.ss) from
(select t.parm2 ss from test t
group by t.parm2 desc)    a

最终SQL

select t.parm2,date  from test t order by FIND_IN_SET(parm2,(
SELECT GROUP_CONCAT(a.ss) from
(select t.parm2 ss from test t
group by t.parm2 desc)    a)
),date desc

litblack | 园豆:209 (菜鸟二级) | 2017-12-25 14:57
0

以解决,用了自定义排序

流年煮雪 | 园豆:219 (菜鸟二级) | 2018-02-05 15:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册