如何根据mod条件按结果排序?

时间:2019-06-19 15:16:26

标签: sqlite

我想根据条件订购输出。

| Id |    Date  |
-----------------
| 1  | Jan 2020 |
-----------------
| 2  | Feb 2020 |
-----------------
| 3 | Mar 2020 |
-----------------
| 4 | Apr 2020 |
-----------------
| 5 | May 2020 |
-----------------
| 6  | Jun 2019 |
-----------------
| 7  | Jul 2019 |
-----------------
| 8  | Aug 2019 |
-----------------
| 9  | Sep 2019 |
-----------------
| 10  | Oct 2019 |
-----------------
| 11  | Nov 2019 |
-----------------
| 12  | Dec 2019 |
-----------------

用户可用的数据仅仅是ID,我没有从用户那里得到任何其他信息,并且基于ID,我需要对记录进行排序。

因此,假设我的可用ID为6,则预期输出将类似于

-----------------
| Id |    Date  |
-----------------
| 6  | Jun 2019 |
-----------------
| 7  | Jul 2019 |
-----------------
| 8  | Aug 2019 |
-----------------
| 9  | Sep 2019 |
-----------------
| 10  | Oct 2019 |
-----------------
| 11  | Nov 2019 |
-----------------
| 12  | Dec 2019 |
-----------------
| 1  | Jan 2020 |
-----------------
| 2  | Feb 2020 |
-----------------
| 3 | Mar 2020 |
-----------------
| 4 | Apr 2020 |
-----------------
| 5 | May 2020 |
-----------------

Tl; dr; 我想从id订购详细信息,然后循环回其余条目,即值小于id。

到目前为止,我已经能够基于ID访问记录,但无法访问其余记录。

select * from TableName where Id < @id

1 个答案:

答案 0 :(得分:2)

您可以通过条件排序来做到这一点:

select * from tablename 
order by (Id >= 6) desc, Id

请参见demo
或:

select * from tablename 
order by 
  case when Id >= 6 then 0 else 1 end,
  Id

请参见demo
结果:

| Id  | Date     |
| --- | -------- |
| 6   | Jun 2019 |
| 7   | Jul 2019 |
| 8   | Aug 2019 |
| 9   | Sep 2019 |
| 10  | Oct 2019 |
| 11  | Nov 2019 |
| 12  | Dec 2019 |
| 1   | Jan 2020 |
| 2   | Feb 2020 |
| 3   | Mar 2020 |
| 4   | Apr 2020 |
| 5   | May 2020 |