MySQL 复杂的 ORDER BY 问题 [英] MySQL complex ORDER BY issue

查看:52
本文介绍了MySQL 复杂的 ORDER BY 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的查询中有一个复杂的排序问题.

I have a complicated ordering issue in my query.

原始无序数据:

+------+--------+-----------+
| id   | job_id | action_id |
+------+--------+-----------+
|    1 |      2 |         1 |  
|    2 |      2 |         2 |  
|    3 |      1 |         1 |  
|    4 |      2 |         3 |  
|    5 |      4 |         1 |  
|    6 |      1 |         2 |  
|    7 |      3 |         1 |  
|    8 |      3 |         2 |  
|    9 |      4 |         2 |  
+------+--------+-----------+

需要订购:

+------+--------+-----------+
| id   | job_id | action_id |
+------+--------+-----------+
|    7 |      3 |         1 |  
|    8 |      3 |         2 |  
|      |        |           |    * blank lines added for clarity,
|    5 |      4 |         1 |      not desired in actual data
|    9 |      4 |         2 |  
|      |        |           | 
|    3 |      1 |         1 |  
|    6 |      1 |         2 |  
|      |        |           | 
|    1 |      2 |         1 |  
|    2 |      2 |         2 |  
|    4 |      2 |         3 |  
+------+--------+-----------+

这种排序背后的理论:

  • 最大的id是最近添加的条目
  • action_id 为 1 的最新 id
  • 后跟具有相同 job_id 的具有升序 action_id 的条目
  • 然后是 1 的下一个最近的 action_id
  • 无止境

我无法在表格中添加列以帮助排序,正如我在其他一些排序问题解决方案中看到的那样.

I'm not able to add columns to the table in order to aid in sorting, as I've seen in some other solutions to ordering questions.

非常感谢任何帮助!

推荐答案

我最好的办法是:

SELECT * FROM tbl 
    ORDER BY FIND_IN_SET(job_id,
        (SELECT GROUP_CONCAT(job_id ORDER BY ID DESC) 
         FROM tbl WHERE action_id = 1));

这篇关于MySQL 复杂的 ORDER BY 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆