对于我来说很N的一个SQL :选出传入@ID 选出除@ID外的近四个邻近的ID
2009-04-28 16:24
225 查看
群内"水族"兄的SQL
set nocount on
if object_id('tb')is not null drop table tb
go
create table tb(ID int, bb varchar(10), cc varchar(10))
insert tb select 1, '**' ,'hj'
insert tb select 3, '88',''
insert tb select 4, '**', 'dfhfgf'
insert tb select 6, 'ld8','dfg'
insert tb select 7, ' fad',''
insert tb select 8, ' fyae','sdfgdf'
insert tb select 9, ' adafd','gg'
--當ID=1
select * from (select top 4 * from tb where id!=7 order by abs(7-id) )
c order by c.id asc
select top 4 * from tb where id!=7 order by abs(7-id)
/*ID bb
----------- ----------
3 88
4 **
6 ld8
7 fad*/
--當ID=4
select top 4 * from tb where id!=4 order by abs(4-id)
/*ID bb
----------- ----------
3 88
6 ld8
7 fad
1 ***/
达到如下目的:
要选出前面2个后面2个,如果前面没有才选后面的4个,如果后面没有,选前面4个
set nocount on
if object_id('tb')is not null drop table tb
go
create table tb(ID int, bb varchar(10), cc varchar(10))
insert tb select 1, '**' ,'hj'
insert tb select 3, '88',''
insert tb select 4, '**', 'dfhfgf'
insert tb select 6, 'ld8','dfg'
insert tb select 7, ' fad',''
insert tb select 8, ' fyae','sdfgdf'
insert tb select 9, ' adafd','gg'
--當ID=1
select * from (select top 4 * from tb where id!=7 order by abs(7-id) )
c order by c.id asc
select top 4 * from tb where id!=7 order by abs(7-id)
/*ID bb
----------- ----------
3 88
4 **
6 ld8
7 fad*/
--當ID=4
select top 4 * from tb where id!=4 order by abs(4-id)
/*ID bb
----------- ----------
3 88
6 ld8
7 fad
1 ***/
达到如下目的:
要选出前面2个后面2个,如果前面没有才选后面的4个,如果后面没有,选前面4个
相关文章推荐
- 对于有Id,ParentId,Name这样类型字段的表的一个sql查询
- 关于IN 后面传入ID列表参数表值函数的一个写法:非拼SQL
- 对于一个小白来说,遇到的前端问题(1)
- 【翻译自mos文章】对于一个新建的db来说,对Dba_Feature_Usage_Statistics的查询返回零行
- 对于一个小白来说,遇到的前端问题(2)
- 2011年齐鲁软件设计大赛做基于android的项目如何,对于一个初学者来说是不是太难了?
- 你们觉得对于一个程序员来说最大的悲哀是什么?
- 邻乐帮:因为我怕下辈子遇不到你,所以给你当下最好的 人们说,遇到一个对的人的概率是很小的,如果没遇到,那么我们需要耐心去等,如果遇到了,那么,我们就要好好珍惜。 对于我来说,我现在的女朋友就是那个
- “一个好的药鼎对于炼药师来说,就如同武士手中的宝剑一般重要。”
- 每一天都有更多的数据、用户和应用在加入Apache Hadoop这个日益壮大的集群中来。虽然对于整个数据驱动的组织来说这是一个好消息,但对于安全管理员和监察人员来说,如何让终端用户在现存的Hadoop
- 在WM_COMMAND中,lParam用来区分是命令消息还是控件通知消息:如果lParam为NULL,则这是个命令消息,否则lParam里面放的必然就是控件的句柄,是一个控件通知消息。对于wParam则是低位放的是控件ID,高位放的是相应的消息事件。
- 关于《go程序设计语言》书中一个OS样例的坑(对于初学者来说)
- 个人学习jenkins集成php自动化测试的经历..对于一个没经验的人来说很痛苦(希望有大神来补充批评..)
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
- 对于一个小白来说,遇到的前端问题(2)
- sql通过一个节点ID得到所有子节点
- SQL中 得到相邻的上一个和下一个ID
- 对于一个组织来说,只有温柔还不够
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- Sql : 如何判断一个表中,是否存在一个ID,如果存在不处理,如果不存在