我想根据条件订购输出。
| 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
答案 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 |