DB中有个2位整型字段(主键),
DB中最多储存98条数据(就是不可能出现1~99全有的情况)
逻辑是要求实现这个字段1~99循环排序,
就是如果DB中没有1或99,那么就正常排序,如果有1和99,
那么1就要排在99的后面比如:
1,2,3,66,67,98,99
排序后是:98,99,1,2,3,66,671,2,3...96,97,99
排序后是:99,1,2,3...96,971,2,3,66,67,98
排序后是:1,2,3,66,67,982,3,66,67,98,99
排序后是:2,3,66,67,98,99
DB中最多储存98条数据(就是不可能出现1~99全有的情况)
逻辑是要求实现这个字段1~99循环排序,
就是如果DB中没有1或99,那么就正常排序,如果有1和99,
那么1就要排在99的后面比如:
1,2,3,66,67,98,99
排序后是:98,99,1,2,3,66,671,2,3...96,97,99
排序后是:99,1,2,3...96,971,2,3,66,67,98
排序后是:1,2,3,66,67,982,3,66,67,98,99
排序后是:2,3,66,67,98,99
解决方案 »
- 【100分】求书:Sql/Oralce
- 面试题目,这个大表如何设计呢?
- 如何把Oracle中的一个表锁住,使用select语句后一直等待返回。
- cdc的触发器问题
- pro*c for循环插入问题
- 安装后开始菜单oradb10g_home1里没有Enterprise Manager Console是什么原因?
- 为何字符型的长度会被自动加倍?
- 关于BLOB插入的问题,请帮忙看看为什么出错?
- 有谁知道哪能下载到支持增量数据复制(数据同步)的软件?
- 连接oracle出错问题,在线给分,急!!!
- SQL排序问题
- 请问在Oracle For Windows中,怎么知道本地Oracle服务器上有哪些数据库?
DB中最多储存98条数据(就是不可能出现1~99全有的情况)
逻辑是要求实现这个字段1~99循环排序,
就是如果DB中没有1或99,那么就正常排序,如果有1和99,
那么1就要排在99的后面比如:
1,2,3,66,67,98,99
排序后是:66,67,98,99,1,2,31,2,3...96,97,99
排序后是:99,1,2,3...96,971,2,3,66,67,98
排序后是:1,2,3,66,67,982,3,66,67,98,99
排序后是:2,3,66,67,98,99
Create Table DB
(ID Int)
Insert DB Select 1
Union All Select 2
Union All Select 3
Union All Select 4
Union All Select 5
Union All Select 10
Union All Select 97
Union All Select 98
Union All Select 99
GO
--方法一
Select * From DB Where ID > (Select Min(ID) From DB A Where Not Exists(Select ID From DB Where ID = A.ID + 1))
Union All
Select * From DB Where ID <= (Select Min(ID) From DB A Where Not Exists(Select ID From DB Where ID = A.ID + 1))--方法二
Select * From DB Order By (Case When ID > (Select Min(ID) From DB A Where Not Exists(Select ID From DB Where ID = A.ID + 1)) Then 0 Else 1 End), ID
GO
Drop Table DB
--Result
/*
ID
10
97
98
99
1
2
3
4
5
*/
oracle不曉得怎麼寫:(create table T(id int)
insert into T select 1
insert into T select 2
insert into T select 3
insert into T select 10
insert into T select 11
insert into T select 97
insert into T select 98
insert into T select 99select [id] from T
order by case when (select count(*) from T a where a.id<=T.id)=id
then 1
else 0 end, id/*
id
-----------
10
11
97
98
99
1
2
3*/drop table T