MYSQL应用 - 自定义排序,字段置顶等 _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2105 | 回复: 0   主题: MYSQL应用 - 自定义排序,字段置顶等         下一篇 
tk
注册用户
等级:中士
经验:207
发帖:80
精华:0
注册:2011-10-19
状态:离线
发送短消息息给tk 加好友    发送短消息息给tk 发消息
发表于: IP:您无权察看 2014-12-24 14:28:57 | [全部帖] [楼主帖] 楼主

在MYSQL数据库查询时,排序是经常用到的一个功能。单纯按照某字段排序查询较为简单,无非就是order by `field` (DESC/ASC)。如:

1     SELECT * FROM `table`
2     ORDER BY `field` DESC


注:上面的table换成要查询的表名,field换成要排序的字段名,DESC表示从大到小,去掉则从小到大。

下面介绍几个复杂一点的应用:

自定义排序

需求:查询table表,取出id为1,5,9,7的记录,并按1597的顺序显示.

解决:

1     SELECT * FROM `table`
2     WHERE id in(1,5,7,9)
3     ORDER BY FIELD(`id`,1,5,9,7) //注意FIELD后面无空格


文章置顶

需求一:查询文章表table,取出所有文章,但字段zj为1的记录置顶(均以time字段排序,time大的 放在前面)。

解决一:

1     SELECT * FROM `table`
2     ORDER BY `zj` DESC,`time` DESC


解决二:

1     SELECT * FROM `table`
2     WHERE zj=1
3     ORDER BY `time` DESC
4     UNION
5     SELECT * FROM `table`
6     WHERE zj!=1
7     ORDER BY `time` DESC


需求二:查询文章表table,取出所有文章,置顶ID为1、5、12、2的文章,并按上述顺序显示。

解决:

1     SELECT * FROM `table`
2     ORDER BY FIELD(`zj`,1,5,12,2) DESC,`time` DESC


作者: Sjolzy | Google+
地址: http://sjolzy.cn/MYSQL-apply-a-custom-sort-fields-etc-Top.html

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论