解决一个mysql关于按文章以及评论的最早时间的排序问题
来源:互联网 发布:天界进化数据 编辑:程序博客网 时间:2024/05/05 19:20
问题是:
有个文章列表要显示文章 如果文章时间发布的越近的越靠前 时间一样看评论 如果评论越近的越靠前,有点像论坛的帖子列表
抽象出来的问题就是:
按 time1,time2中较大者的顺序排列 ,要使查询结果的ID顺序为:43521
经过群里的讨论,得出以下一些答案:
SELECT * FROM `te` ORDER BY time1 DESC,time2 DESC
######经网友提醒,此法错误,将time2的id为5的数据改为100即可看出效果######原因:ORDER BY time1 DESC, time2 DESC 的意思是,先按 time1 排序,对于 time1 相同的记录再按 time2 排序。######
SELECT* FROM teORDER BY CASE WHEN time1 > time2THEN time1ELSE time2END
SELECT* , GREATEST( time1, time2 )AS time3FROM`te` ORDER BY time3 DESC
SELECT* , if( time1 > time2, time1, time2 )AS ttFROM teORDERBY tt DESC
另外,有一个网友给出了这样一个答案:
select t.*,time1+time2 as s from toerder by s
我觉得虽然不是本题的答案,但是也是一种解题的思路,值得学习,这个求最大的技巧以后可以考虑别的用处
P.S.我在解决实际问题的时候又碰到了一个问题,就是如果time1,time2如果有一个为NULL的话,那个WHEN THEN ELSE的语法就不行了,后来找到了解决办法,把NULL转化为0即可,在select中把字段可能为NULL的字段进行转化一下:
select if(isnull(col),0,col) as newcol
希望对后来的人有用!
昨天晚上赶工已经把实际问题给解决了,下面来秀一下,嘿嘿,这个sql语句应该是我学sql以来写过最长的一个了:
SELECT A.aid, A.title, A.fid, A.fname, A.comments, A.posttime, if( isnull( C.posttime ) , 0, C.posttime )AS C_posttime, C.content AS C_content FROM qb_article A LEFT JOIN qb_reply R ON A.aid=R.aid LEFT JOIN ( SELECT aid, content, MAX( posttime )AS posttime FROM`qb_comment` GROUP BY aid ORDER BY posttime DESC ) AS C ON C.aid = A.aid WHERE R.topic=1 AND A.fid=31 AND A.yz =1 ORDER BY CASE WHEN A.posttime > C_posttime THEN A.posttime ELSE C_posttime END DESC LIMIT 0,20
(我的电脑上测试系统名为V7)
0 0
- 解决一个mysql关于按文章以及评论的最早时间的排序问题
- 一个关于无限评论的问题
- 一个文章排序的问题
- 现在想起来,一个最早学习编程的时候的问题, 关于文本文件的读写
- Reddit评论排序新算法:解决前10楼占领优秀评论区的问题
- 关于mysql中一个分类排序的语句问题
- 解决了一个关于mysql登陆的问题.
- 关于英文文章分词排序的问题
- 删除创建时间最早的文件夹
- 一个变态问题的解决!!!!!!!!!(时间)
- 关于查询多条记录中最早的操作时间的记录
- mysql 用case when 解决比较时间大小后在排序的问题
- 查看mysql最早的binlog文件编号
- 一个关于借款时间的问题
- 解决mysql中union排序的问题
- mysql中关于时间的问题
- 关于mysql的时间存储类型问题
- 关于Mysql入库时间的问题
- 瀑布流网页布局知识
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- 仿qq登录界面
- 正则表达式-手机号校验
- FineUI的简单配置
- 解决一个mysql关于按文章以及评论的最早时间的排序问题
- 黑马程序员_动态代理类设计原理与结构
- android APK签名过程之MANIFEST.MF分析
- 【AndEngine游戏开发】引言
- WinCE MUI的实现
- hdu oj 2032
- Vijos 1007 饶钉子的长绳子
- 《黑马程序员》高新技术第一天学习总结
- Linux 防御CC攻击