首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL复序问题

MySQL复序问题
EN

Stack Overflow用户
提问于 2014-10-16 16:51:49
回答 2查看 70关注 0票数 0

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

原始数据,无序数据:

代码语言:javascript
复制
+------+--------+-----------+
| 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 |  
+------+--------+-----------+

必需订购:

代码语言:javascript
复制
+------+--------+-----------+
| 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
  • 后面跟着具有相同action_ids的升序job_id的条目。
  • 接下来是最新的action_id 1
  • 无穷大

编辑:我无法在表中添加列以帮助排序,就像我在其他一些排序问题解决方案中看到的那样。

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-16 17:18:46

我最好的选择是:

代码语言:javascript
复制
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));
票数 1
EN

Stack Overflow用户

发布于 2014-10-16 17:10:12

我没有找到一种简单的方法,您认为下面的代码如何:

代码语言:javascript
复制
select c.id, c.job_id, c.action_id
  from (select a.id, a.job_id, a.action_id, min(b.id) as related_id
          from myTable a 
          inner join myTable b
             on a.job_id=b.job_id 
         group by a.job_id) c
 group by c.id
 order by c.related_id desc, c.action_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26409816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档