php - 对 ORDER BY FIELD 产生的记录组进行排序

标签 php mysql sql

在 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/

相关文章:

php - 用 ajax 填充 Laravel 中的表?

php - 安装过程中 yii migrate 出现 Yii 2.0 高级错误

php - mySQL:如何将用户与仅返回最新日志的user_logs结合起来?

mysql - 将已排序分区中的行划分为特定数量的组。 [MySQL]

sql - Oracle - 忽略约束失败

PHP - 只读电子表格文件类型?

mysql - 用于 Restful API 的 Rails 或 node.js

php - cakephp hasone 和属于加入不工作

javascript - MD 数组 : Add additional array if value isn't found

mysql - 使用 count() 从另一个表更新一个表