[英]Order a table when knowing the previous ID element
我正在尋找訂購SQL表的簡單解決方案。 結構如下:
ID | content | previous
------+---------+---------
12753 | blabla1 |
24985 | blabla2 |
31689 | blabla3 |
41036 | blabla4 | 12753
54985 | blabla5 |
previous
列用於指示必須在此項之前顯示的元素。 例如,我想要這樣的結果:
ID | content | previous
------+---------+---------
12753 | blabla1 |
41036 | blabla4 | 12753
24985 | blabla2 |
31689 | blabla3 |
54985 | blabla5 |
有SQL的簡單解決方案嗎? 我以為可以使用PHP來更改數組中的位置,但是我認為它太復雜了...
在第二步中,我希望能夠指出一個元素必須是第一個。 在上previous
列中,該元素將為“ 0”。 但是對於這種情況,在我看來,最簡單的解決方案是使用PHP。
非常感謝你的幫助,
問候
這是一種適用於一個級別的方法:
select t.*
from t
order by coalesce(previous, id), id;
將兩個ID粘合在一起,然后使用它們進行排序。 IF(...)
在您以前使用零作為標准值時存在
select *
from test
order by concat(IF(previous=0,"",previous), id), id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.