簡體   English   中英

在知道先前的ID元素時訂購表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM