set @rank:=0;
MYSQL的降序排列
今天查询时需要用到降序排列,老是出错,仔细检查SQL语法也没问题,
后来才知道,原来order by要放在limit的前面.或者说limit要放在最后.
[sql]
String sql = "select * from s_dayreport " +
"where userId = "+userId+" " +
"order by taskDate desc " +
"limit "+firstResult+","+maxResults+" "降序排列的例子,插入的数据无关,关键是你打印出或者展现出的效果
具体查询如下:
SELECT*
查询的结果和in中的顺序并不一致,也就是说在批量查询时,mysql的查询并不是按照in中的值得顺序来查询的.那怎么才能保证和in查询中的顺序相同呢?
查询了资料发现有两种方式可以对in查询的结果进行排序.一种是order by find_in_set,另外一种是order by substring_index
可以通过用该字段分组计数获得.例如:
select col1,count(col1) as cnt
from t1 group by col1;
这个查询可返回表t1的字段col1中每个值的重复次数.
select?id,integral,addtime?from?cos_member_vip?order?by?integral?desc,addtime?asc
--如果需要生成以积分为最高优先,其次以时间为从高到低为条件生成个排名字段,可用
--ROW_NUMBER()?OVER?()函数
这个如果想要性能的话,就用下面的sql语句实现:
然后php获得这条结果数组,取第一个元素即是排序
如果对这个sql语句有疑问,不明白,可以使用一个比较耗费性能的方法:
select userid from record
执行这条语句,获得一个数组$res
遍历前设置一个记录排序的标识 $seq=1;
for(...){
$userid=$res['userid'];//把第seq 个位置的学号拿出来,跟想要的学号比
break;
}
$seq++;
//如果 这个排序标识比结果集数组大小还大,说明没这个userid的记录.
$seq就是排序
我没有测试 你可以自己试一下
以上就是土嘎嘎小编为大家整理的mysql怎么做排行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!