MYSQL自定义排序
2015-08-12 14:28
549 查看
问题描述
大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例, 下同):SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` ASC
降序排列的 SQL 为:
SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` DESC
有时以上排序并不能满足我们的需求. 例如, 我们想要按 id 以 5, 3, 7, 1 的顺序排列, 该如何实现. 这也是很多国内外同行经常遇到的问题之一.
下面我们给出按表中某字段, 以我们想要的列表方式排序的解决方案.
解决方案
用"按字段排序" (ORDER BY FIELD).语法
ORDER BY FIELD(`id`, 5, 3, 7, 1)
要注意的是, FIELD 后面是没有空格的.
因此, 完整的 SQL 为:
SELECT * FROM `MyTable`
WHERE `id` IN (1, 7, 3, 5)
ORDER BY FIELD(`id`, 5, 3, 7, 1)
常见应用
SELECT * FROM `MyTable` WHERE `name` IN ('张三', '李四', '王五', '孙六') ORDER BY FIELD(`name`, '李四', '孙六', '张三', '王五')
参考资料
Handy MySQL - ORDER BY FIELDSort results by order in list
相关文章推荐
- php MySQL数据库操作类源代码
- MySQL常用语句
- 写MySQL存储过程实现动态执行SQL (转)
- mysql innodb 行锁解锁后出现1213 死表现象 Deadlock found when
- 101个MySQL的调节和优化的Tips
- PowerDesigner反projectM连接ySql没有mySql odbc驱动器
- Mysql注入总结(三)
- Mac下自己编译安装的MySQL启动方法速记
- mysql计算两个时间的分钟数
- mssql与mysql的有什么区别?哪个更好用?
- win7下:MySQL-Front的下载与安装
- 慎用mysql的join语句和in子查询语句,普通查询可能是最好的优化
- WIndows 下安装mysql (non-install版本,即绿色版,或称为 源码包)
- MySQL备份与恢复之热拷贝(4)
- 如何MYSQL实现连接池
- mysql int类型默认值设置为空,结果会自动转成0。
- mysql 查看版本
- mysqli一些常用方法的使用
- 安装discuz advice_mysqli_connect
- mysql更改字符编码