mysql语句按时间顺序排序_mysql按照指定顺序对数据排序该怎么写 - 翟码农技术博客...

翟码农现在有一个需求:如果当天创建了很多分类的文章,文章的展示必须按照指定的文章分类来排序,mysql该怎么写?

主要涉及知识点:order by field(列名, 值1,值2,值3...)

方便测试,翟码农从数据库里挑出了8条数据进行测试,数据insert语句如下,大家可以拿去做测试用:INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (1, '轰,幸福消逝的声音', 2, 1501394153);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (2, '我的小叔', 1, 1501394154);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (3, '土豆诔', 1, 1501394155);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (4, '归乡旅馆', 2, 1501394156);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (5, 'LNMP环境部署(非编译安装)', 9, 1501394157);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (6, '从前想长大,如今想从前', 1, 1502115760);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (7, '知己,一句顶一万句;陌路,一句也顶一万句', 2, 1502115761);

INSERT INTO `coderzhai_news` (`news_id`, `title`, `cate_id`, `create_time`) VALUES (8, '珍惜这个夏天,尽管她要离开你', 9, 1502115762);

数据按news_id排序如下所示:

27285603111d4050977b8afc36395e0f.png

现在要将7月30号的数据和8月7号的数据,都按分类2-9-1来排序,完整sql如下:SELECT news_id,title,cate_id, from_unixtime(create_time)

FROM coderzhai_news n

ORDER BY LEFT(FROM_UNIXTIME(create_time),10) ASC, FIELD(cate_id,2,9,1)

其中LEFT(FROM_UNIXTIME(create_time),10)意思是,先将日期转换成“yyyy-mm-dd hh:ii:ss”格式,然后截取左边10个字符按升序排序,即按年月日时间递增排序。

最终执行结果如下:

8e6181801b761d4f1116c07608297851.png

正好实现了翟码农的需求。

现将测试数据news_id=3的cate_id改为5,将news_id=4的cate_id改为4,即不在上面指定的2,9,1这些值里,那么上面语句执行的结果会如何呢?

结果如下图所示:

94ba7b3c392dae48438fb616121fc780.png

经过实践,会发现:对应列值不在指定顺序里的数据记录,将优先排列,无其它排序条件的话,则默认按照主键id递增排序

本文为翟码农个人博客里mysql分类下有关数据排序的原创文章,转载请注明出处:http://www.zhai14.com/blog/how-to-sort-data-according-to-an-arranged-data-list-in-mysql.html

2020年03月10日 20:18文章创建

2020年03月10日 23:53文章发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值