新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
thinkphp使用的数据库是mysql,mysql多个字段排序的语句:
成都创新互联公司专注于光山企业网站建设,自适应网站建设,商城网站定制开发。光山网站建设公司,为光山等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
select
* from `表名` where 条件 order by 字段1 desc,字段2
asc,...
thinkphp中排序方法为
$User-where('score0')-order('score desc')....;
但是例子中只能单字段排序,不过可以理解成字符串,那就可以这样写试试
$User-where('score0')-order('score desc,id asc,...')....;
$order=$_GET['order'];
$fs=$_GET['fs'];
if(isset($order)){
$order=$_GET['order'];
}else{
$order="id";//默认为id排序
}
if(isset($fs)){
$fs=$_GET['fs'];
}else{
$fs="asc";//默认为asc,因为asc可以省略,所以可以留空
}
修整了下
多重排序,order by 字段 方式,字段 方式...
order by age desc,id desc 先按年龄降序,相同的年龄里按id降序
order by id,age desc 先按id升序,相同的id里按年龄降序
至于你到底需要什么样的排序方式,按这个思路自己写就可以了
楼上说的比较正确
?php
首先链接你的数据库
sql="select
*
from
test
order
by
t
desc
limit
0,100"
$ret=mysql_query($sql,$db);//$db为数据库连接
$zone=1;
while($row=mysql_fetch_array($ret)){
echo
"名次:".$zone.",";
echo
$row['m'];//用户名
echo
$row['t'];//积分
echo
$row['u'];//序号
echo
"br/";
}
?
从你要输出的结果来看,你这样实现法不太科学,代码不高效,数据量少时还算说得过去,若上万数据的话,服务器会崩溃。建议你在数据库结构上进行改进,对于排序的字段设计可以采用人为可控制的数值,这样你要实现的话,一个sql语句搞定到数组后,你想输出哪种格式都是可以的了。你去参考下那些知名的CMS系统的数据库设计结构,我想你会受到启发的。
记得给分!!!
php方法:
可以查一下“冒泡排序”,可以实现
只需要把往前推的规则改一下即可
mysql方法:
可以添加一个新的字段,name_type 你在输入数据的时候,姓张的name_type = 1 ,类似
姓王的name_type= 2 ,查询的时候order by name_type asc 即可;