mysql - MySQL按具有前一行ID的多列排序
问题描述
我有一组如下所示的行:
我需要首先根据“SequenceNo”对这些行进行排序。然后基于“PreviousID”。所以最终结果应该是这样的(最后两行应该交换):
我进行了广泛的搜索,但找不到适合这种情况的东西。非常感谢任何帮助。
谢谢!
解决方案
你可以尝试自我加入和排序
drop table if exists t;
create table t(id int,seqno int, previous_id int);
insert into t values (201,1,0),(204,1,201), (202,2,203),(203,2,204);
select t.id,t.seqno,t.previous_id , t1.id,t1.seqno,t1.previous_id
from t
left join t t1 on t1.id = t.previous_id
order by t1.seqno,t1.id;
+------+-------+-------------+------+-------+-------------+
| id | seqno | previous_id | id | seqno | previous_id |
+------+-------+-------------+------+-------+-------------+
| 201 | 1 | 0 | NULL | NULL | NULL |
| 204 | 1 | 201 | 201 | 1 | 0 |
| 203 | 2 | 204 | 204 | 1 | 201 |
| 202 | 2 | 203 | 203 | 2 | 204 |
+------+-------+-------------+------+-------+-------------+
4 rows in set (0.00 sec)
推荐阅读
- java - Java如何获取包括异常类型在内的前N行异常?
- c++ - 模板参数中的结构模板
- python - 如何在python中找到2个值中的哪一个更接近给定数字?
- reactjs - X 轴上两个刻度之间的位置时间戳
- mysql - MySQL查询跨两列的名称
- c# - 如何将旧的 mdb 数据库导入 C# DataTable
- python - 如何将现有变量传递到调用的 pyqt5 ui 文件中?
- c++ - 当用户键入字母时,MFC CListView 如何防止搜索和自动选择?
- jupyter-notebook - 无法创建新的 jupyter 笔记本
- python - 在 RPi 启动时启动 Python 脚本不起作用