MySQL 复杂的 ORDER BY 问题 [英] MySQL complex ORDER BY issue
本文介绍了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屋!
查看全文