mysql多个相同类型字段排序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql多个相同类型字段排序问题相关的知识,希望对你有一定的参考价值。
我想按时间排序得到5条结果,不是先排这个,再排另一个,而是综合三个字段的时间来排序
就是论坛帖子排序问题,帖子发布时间先后正常排序情况下,优先将最新的更新或回复靠前排,更新的或回复的又要再优先排序
这个字段名可以是多个,如:
首先按回复时间进行排序,然后回复时间相同的再按发布时间进行排序
select * from 表名 where 条件 order by 回复时间字段名 desc(降序),发布时间 desc ,更新时间 desc
是否是你想要结果呢?追问
不是,你那样排序结果就是先排回复时间,在排发布时间,最后排更新时间,我要综合这三种时间一起排序
参考技术B SELECT *,GREATEST(updatetime,lastpost,createtime) as f FROM `表` WHERE 'condition' order by f desc本回答被提问者采纳 参考技术C SELECT *, ifnull(if(updatetime>lastpost,updatetime,lastpost),createtime) as f FROM `表` WHERE 1 order by f desc不知道是不是这个意思?追问
嗯 但是最后一行为0 哪里错了
哦,这样:
select * , greatest( createtime, updatetime, lastpost ) as f from `test` order by f desc
mysql order by 多个字段
下图是只加了一个排序的结果:
可以看到,单一字段是没问题的。如果加入c2呢?下图是c2
可以发现,这里的orderby是先按c1增序,然后对于按c1排好序以后的相同的元素,又根据c2做了降序排序。下面 是c1,c2都增序,结果符合。
总结就是,orderby多个字段时,用逗号分隔每一个字段,如果字段不指明排序方式,默认是增序。排序的方法是先按第一个字段排序,如果有相同的再按后续的字段依次排序。
以上是关于mysql多个相同类型字段排序问题的主要内容,如果未能解决你的问题,请参考以下文章