排序:
我想先将记录先按照last_time由大到小排序,在last_time值相同的条件下按照id值由大到小排列,以保证晚发布的信息有优先的露面的机会,请问这个sql语句应该如何写?
还有,我感觉这种算法还是有一些缺点,请问高人能不能告诉我更好的算法?
7 个解决方案
#1
order by last_time desc ,id desc
#2
我从前用过这种排序,老是感觉没有效果
此外还用过
order by last_time,id desc
order by last_time and id desc
这几种写法都没有报错,而且查询结果都不相同
不过感觉order by last_time desc,id desc只按照其中一个进行了排序而忽略了另外一个,好像在mysql手册上也见过这种写法
此外还用过
order by last_time,id desc
order by last_time and id desc
这几种写法都没有报错,而且查询结果都不相同
不过感觉order by last_time desc,id desc只按照其中一个进行了排序而忽略了另外一个,好像在mysql手册上也见过这种写法
#3
那你这样
select * from (select * from tablename order by last_time desc) as t order by t.id desc
select * from (select * from tablename order by last_time desc) as t order by t.id desc
#4
呵呵,谢谢
#5
order by last_time,id desc 这种方式last_time默认是升序的
order by last_time and id desc 这种方式两个字段都是降序的
应该先分组,
select id,last_time from yourtablename group by last_time order by last_time desc,id desc
order by last_time and id desc 这种方式两个字段都是降序的
应该先分组,
select id,last_time from yourtablename group by last_time order by last_time desc,id desc
#6
and隔开哪个,第二个参数不起作用。
#7
last_time 很有可能是毫秒级别的不同,导致结果看上去id没有起排序作用。
#1
order by last_time desc ,id desc
#2
我从前用过这种排序,老是感觉没有效果
此外还用过
order by last_time,id desc
order by last_time and id desc
这几种写法都没有报错,而且查询结果都不相同
不过感觉order by last_time desc,id desc只按照其中一个进行了排序而忽略了另外一个,好像在mysql手册上也见过这种写法
此外还用过
order by last_time,id desc
order by last_time and id desc
这几种写法都没有报错,而且查询结果都不相同
不过感觉order by last_time desc,id desc只按照其中一个进行了排序而忽略了另外一个,好像在mysql手册上也见过这种写法
#3
那你这样
select * from (select * from tablename order by last_time desc) as t order by t.id desc
select * from (select * from tablename order by last_time desc) as t order by t.id desc
#4
呵呵,谢谢
#5
order by last_time,id desc 这种方式last_time默认是升序的
order by last_time and id desc 这种方式两个字段都是降序的
应该先分组,
select id,last_time from yourtablename group by last_time order by last_time desc,id desc
order by last_time and id desc 这种方式两个字段都是降序的
应该先分组,
select id,last_time from yourtablename group by last_time order by last_time desc,id desc
#6
and隔开哪个,第二个参数不起作用。
#7
last_time 很有可能是毫秒级别的不同,导致结果看上去id没有起排序作用。