标题:求一SQL语句-----怎么让同一个表中的一部分数据随机显示,另一部分按ID排序
只看楼主
bnbpop
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2007-5-24
 问题点数:0 回复次数:20 
求一SQL语句-----怎么让同一个表中的一部分数据随机显示,另一部分按ID排序

求一SQL语句-----怎么让同一个表中的一部分数据随机显示,另一部分按ID排序
SQL数据库
表结构—表 username

ID Name Password
1 a aaa
2 b bbb
3 c ccc
4 d sss
5 e eee
6 f ffff
7 g ggg
8 h hhh
9 j jjjj
10 k kkk

怎么用一句SQL语句让ID1---5的数据随机显示和6---10 的数据按ID倒序显示的两种同时实现
SELECT * FROM USERNAME ORDER BY CASE WHEN ID>5 THEN newid() ELSE - 1 END id ASC

[此贴子已经被作者于2007-5-25 9:34:34编辑过]

搜索更多相关主题的帖子: SQL 语句 随机 数据 
2007-05-24 14:13
shdyh977
Rank: 1
等 级:新手上路
威 望:1
帖 子:109
专家分:0
注 册:2007-5-22
得分:0 

没有这种语句的,你只有分开做了,把数据库前5行数据分别输出到5个变量中,再通过程序判断来实现随机排列,接下来再输出另外5行就不用我说了吧

2007-05-24 14:39
lq7350684
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5089
专家分:98
注 册:2006-11-6
得分:0 
加判断后算不算是一条sql语句?
2007-05-24 15:11
bnbpop
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2007-5-24
得分:0 
谢谢
以下是引用lq7350684在2007-5-24 15:11:15的发言:
加判断后算不算是一条sql语句?

谢谢,可以写出来看看吗。?

2007-05-24 16:19
bnbpop
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2007-5-24
得分:0 
谢谢
以下是引用shdyh977在2007-5-24 14:39:45的发言:

没有这种语句的,你只有分开做了,把数据库前5行数据分别输出到5个变量中,再通过程序判断来实现随机排列,接下来再输出另外5行就不用我说了吧

谢谢,我试一下

2007-05-24 16:20
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
得分:0 
'第一个记录集
Set Rs = Conn.Execute("Select top 5 * From [username] Order By ID Asc")

'第二个记录集(注:此SQL不支持ACCESS数据库,ACCESS数据库无newid()内置函数)
Set Rs = Conn.Execute("Select * From [username] Where Id Not In(Select top 5 Id From [username] Order By ID Asc) Order By newid()")

专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2007-05-24 16:28
lq7350684
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5089
专家分:98
注 册:2006-11-6
得分:0 
以下是引用阳光白雪在2007-5-24 16:28:05的发言:
'第一个记录集
Set Rs = Conn.Execute("Select top 5 * From [username] Order By ID Asc")

'第二个记录集(注:此SQL不支持ACCESS数据库,ACCESS数据库无newid()内置函数)
Set Rs = Conn.Execute("Select * From [username] Where Id Not In(Select top 5 Id From [username] Order By ID Asc) Order By newid()")

是不是应该改为

'第一个记录集
Set Rs = Conn.Execute("Select top 5 * From [username]")

'第二个记录集(注:此SQL不支持ACCESS数据库,ACCESS数据库无newid()内置函数)
Set Rs = Conn.Execute("Select * From [username] Where Id Not In(Select top 5 Id From [username] Order By ID Asc) Order By newid() desc")


2007-05-24 16:58
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
得分:0 
以下是引用lq7350684在2007-5-24 16:58:34的发言:

是不是应该改为

'第一个记录集
Set Rs = Conn.Execute("Select top 5 * From [username]")

'第二个记录集(注:此SQL不支持ACCESS数据库,ACCESS数据库无newid()内置函数)
Set Rs = Conn.Execute("Select * From [username] Where Id Not In(Select top 5 Id From [username] Order By ID Asc) Order By newid() desc")


Desc 不能加 newid() 是MSSQL 的内置函数, 用于随机排序


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2007-05-24 17:43
chenkun
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-5-19
得分:0 
Set Rs = Conn.Execute("Select * From [username] Where Id Not In(Select top 5 Id From [username] Order By ID Asc) Order By newid() desc")

请教一下各位这是不是两个表之间的查询呀,但我不明白,格式是什么呀?
2007-05-24 17:54
lq7350684
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5089
专家分:98
注 册:2006-11-6
得分:0 
以下是引用阳光白雪在2007-5-24 17:43:16的发言:

Desc 不能加 newid() 是MSSQL 的内置函数, 用于随机排序

哦,明白了.
不过感觉你写的,跟楼主的意思有点不一样.
他要的是前5条随即
6----10条按一定顺序排.

2007-05-25 08:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-142146-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054963 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved