我有一组看起来像这样的行:

mysql - MySQL按具有前一行ID的多列排序-LMLPHP

我需要首先基于“ SequenceNo”对这些行进行排序。然后基于“ PreviousID”。这样最终结果应该是这样的(最后两行应该交换):

mysql - MySQL按具有前一行ID的多列排序-LMLPHP

我进行了广泛的搜索,但找不到真正适合这种情况的内容。
非常感谢您的帮助。

谢谢!

最佳答案

您可以尝试自行加入和排序

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)

关于mysql - MySQL按具有前一行ID的多列排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54061354/

10-14 18:14
查看更多