MySQL Сортировка по нескольким столбцам с предыдущим идентификатором строки - PullRequest
0 голосов
/ 06 января 2019

У меня есть набор строк, который выглядит следующим образом:

enter image description here

Мне нужно отсортировать эти строки, сначала на основе "SequenceNo". а затем на основе «PreviousID». Так что конечный результат должен быть примерно таким (последние 2 строки должны поменяться местами):

enter image description here

Я провел обширный поиск, но не смог найти то, что соответствует этому сценарию. Буду очень признателен за любую помощь.

Спасибо!

1 Ответ

0 голосов
/ 06 января 2019

Вы можете попробовать самостоятельно объединить и отсортировать

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)
...