在 MySQL 表中,我想对通过 ORDER BY FIELD()
获取的记录组进行排序
更具体地说, 假设,我运行了以下查询:
SELECT name,status,date FROM memberTickets ORDER BY FIELD(status,7,10,3,4) ASC
得到如下结果:
---------------------------------------------------------
| name | status | date |
---------------------------------------------------------
| A | 7 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| B | 7 | 2015-05-07 00:00:00 |
---------------------------------------------------------
| C | 7 | 2015-05-03 00:00:00 |
---------------------------------------------------------
| D | 10 | 2015-05-08 00:00:00 |
---------------------------------------------------------
| E | 10 | 2015-05-01 00:00:00 |
---------------------------------------------------------
| F | 10 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| G | 10 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| H | 3 | 2015-05-03 00:00:00 |
---------------------------------------------------------
| I | 3 | 2015-05-08 00:00:00 |
---------------------------------------------------------
| J | 3 | 2015-05-01 00:00:00 |
---------------------------------------------------------
| K | 4 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| l | 4 | 2015-05-07 00:00:00 |
---------------------------------------------------------
现在,我想以这样的方式对记录进行排序,使记录组的位置保持不变(按字段顺序设置),但每组中的记录按日期属性降序排列,如下所示:
---------------------------------------------------------
| name | status | date |
---------------------------------------------------------
| A | 7 | 2015-05-07 00:00:00 |
---------------------------------------------------------
| B | 7 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| C | 7 | 2015-05-03 00:00:00 |
---------------------------------------------------------
| D | 10 | 2015-05-08 00:00:00 |
---------------------------------------------------------
| E | 10 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| F | 10 | 2015-05-05 00:00:00 |
---------------------------------------------------------
| G | 10 | 2015-05-01 00:00:00 |
---------------------------------------------------------
| H | 3 | 2015-05-08 00:00:00 |
---------------------------------------------------------
| I | 3 | 2015-05-03 00:00:00 |
---------------------------------------------------------
| J | 3 | 2015-05-01 00:00:00 |
---------------------------------------------------------
| K | 4 | 2015-05-07 00:00:00 |
---------------------------------------------------------
| l | 4 | 2015-05-05 00:00:00 |
---------------------------------------------------------
关于如何做到这一点有什么想法或建议吗?
最佳答案
您通常可以像这样为 ORDER BY
指定任意数量的排序参数
SELECT name,status,date FROM memberTickets ORDER BY FIELD(status,7,10,3,4) ASC, date DESC
关于php - 对 ORDER BY FIELD 产生的记录组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128175/