ITPub博客

首页 > 数据库 > MySQL > Mysql里特殊的排序方法

Mysql里特殊的排序方法

原创 MySQL 作者:goolen 时间:2014-08-15 14:41:08 0 删除 编辑
刚刚遇到个特殊需求,如下查询,先根据ddate和money排序查询出10条数据,但是如果查询出来的记录的id中包含特殊id,如vip会员的id,需要排序到最前面;

mysql> select id,money,ddate,type,size from pincome order by ddate desc,money desc limit 10;                  
+-------+---------+----------+------+------+
| id    | money   | ddate    | type | size |
+-------+---------+----------+------+------+
| 14469 |  658869 | 20140616 | 1    | 3898 |
| 14495 |  195635 | 20140616 | 41   |  197 |
| 14489 |  139698 | 20140616 | 3    |  106 |
| 14481 |   84370 | 20140616 | 222  |   59 |
| 14483 |   66598 | 20140616 | 241  |   45 |
| 14479 | 56213.1 | 20140616 | 221  |   55 |
| 14487 |   44254 | 20140616 | 281  |   75 |
| 14505 |   40702 | 20140616 | 8    |   52 |
| 14493 |   33450 | 20140616 | 4    |    6 |
| 14477 |   25812 | 20140616 | 21   |   27 |
+-------+---------+----------+------+------+
10 rows in set (0.01 sec)

查了一些资料,发现mysql还真能实现,oracle在这方面貌似还实现不了(或许只是我知识不够而已,还没有发现oracle怎么实现)

mysql下的实现方法如下:(假如id=14505是我们的VIP高级会员,排序时需要靠前显示)
mysql> select id,money,ddate,type,size from pincome order by id=14505 desc ,ddate desc,money desc limit 10;   
+-------+---------+----------+------+------+
| id    | money   | ddate    | type | size |
+-------+---------+----------+------+------+
| 14505 |   40702 | 20140616 | 8    |   52 |
| 14469 |  658869 | 20140616 | 1    | 3898 |
| 14495 |  195635 | 20140616 | 41   |  197 |
| 14489 |  139698 | 20140616 | 3    |  106 |
| 14481 |   84370 | 20140616 | 222  |   59 |
| 14483 |   66598 | 20140616 | 241  |   45 |
| 14479 | 56213.1 | 20140616 | 221  |   55 |
| 14487 |   44254 | 20140616 | 281  |   75 |
| 14493 |   33450 | 20140616 | 4    |    6 |
| 14477 |   25812 | 20140616 | 21   |   27 |
+-------+---------+----------+------+------+
10 rows in set (0.01 sec)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23249684/viewspace-1251869/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-10-20

  • 博文量
    121
  • 访问量
    731659