注册 登录
编程论坛 SQL Server论坛

[求助]这样的SQL语句怎么写?

天天做梦 发布于 2006-12-21 09:16, 1170 次点击
假设我现在有一个表A
ID字段 从1到10

现在我想前5条记录降序 后5条记录升序

象这样
5
4
3
2
1
6
7
8
9
10
不知道这样的SQL语句如何写 请大家帮帮忙
11 回复
#2
棉花糖ONE2006-12-21 10:28

好象得借助一张临时表

#3
chenxkfox2006-12-21 10:34
很有意思,试了一下,没有成功,不好意思!
#4
angeloc2006-12-21 10:45
联合查询,用..top 5..和..not in (...top 5...)...
#5
chenxkfox2006-12-21 11:20
以下是引用angeloc在2006-12-21 10:45:06的发言:
联合查询,用..top 5..和..not in (...top 5...)...

这样是可以查出来,但是排序好像对吧


你再看看帖子的要求
#6
angeloc2006-12-21 11:45
先是查出TOP 5按降序排列
联合
查出全部 not in (查出top 5)升序排列。
你试试
#7
棉花糖ONE2006-12-21 11:59
select a.id from ( select top 10 id,sign(id-6) as k ,abs(id-6) as m from shuzi
order by sign(id-6),abs(id-6) ) a
#8
nuciewth2006-12-21 23:38
要是写C就好了

许多函数都不会.上面的是什么意思啊,解释下.谢了.
#9
xu20002006-12-21 23:58
not in top 能用吗?
select top 5 a from tablename
order by a
union
select top 5 from tablename
order by a desc
这样写不行吗?
#10
chenxkfox2006-12-22 09:28
以下是引用xu2000在2006-12-21 23:58:58的发言:
not in top 能用吗?
select top 5 a from tablename
order by a
union
select top 5 from tablename
order by a desc
这样写不行吗?

不可以的,
如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。GROUP BY 和 HAVING 子句只能在单独的 SELECT 语句中指定。

#11
xu20002006-12-22 10:17
以下是引用chenxkfox在2006-12-22 9:28:01的发言:

不可以的,
如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。GROUP BY 和 HAVING 子句只能在单独的 SELECT 语句中指定。

高手,领教了。

#12
棉花糖ONE2006-12-22 13:23

union,我原先写了一下,上半部分和下半部分单独出来都能满足,但是union以后它最后会默认用升序排列,select top 5 a from tablename
order by a,如果你想在union前面排序,只能用子查询

1