求一简单的sql语句

netvsj2ee 2011-09-13 03:04:18
表结构如下

id url Q
1 http://www.baidu.com 3
2 http://www.126.com 1


运行sql语句,随即显示url,随即的比例根据字段Q取值,本例的比例是http://www.baidu.com随机出现3次,http://www.126.com随机出现1次
...全文
251 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jan丶X 2011-09-14
  • 打赏
  • 举报
回复
特地来帮顶
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
还有其他办法不
Lemon2050 2011-09-13
  • 打赏
  • 举报
回复
随机生成0-9的数,如果是0,1,2就显示126.com.如果是其它的就显示baidu.com。虽然比例不是很精确,但是却是一个方向啊

declare @num int
set @num=cast(floor(rand()) as int)
if (@num=0 or @num=1 or @num=2)
begin
print 'http://www.126.com'
end
else
print 'http://www.baidu.com'
NBDBA 2011-09-13
  • 打赏
  • 举报
回复
老老实实临时表+循环吧,递归总是可以转化为循环的
--小F-- 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 netvsj2ee 的回复:]
引用 11 楼 nbdba 的回复:
测试了一下,2008最大递归数是100

我这是SQL 2000,有影响不
[/Quote]
2000那种方法用不了的
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nbdba 的回复:]
测试了一下,2008最大递归数是100
[/Quote]
我这是SQL 2000,有影响不
NBDBA 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 netvsj2ee 的回复:]
引用 9 楼 nbdba 的回复:
如果Q不会太大(超过32),可以用CTE解决

SQL code
declare @t table (
id int,url nvarchar(30), Q int)
insert @t select
1, 'http://www.baidu.com', 3
union all select
2, 'http://www.126.com', 1……
[/Quote]
2005+
NBDBA 2011-09-13
  • 打赏
  • 举报
回复
测试了一下,2008最大递归数是100
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nbdba 的回复:]
如果Q不会太大(超过32),可以用CTE解决

SQL code
declare @t table (
id int,url nvarchar(30), Q int)
insert @t select
1, 'http://www.baidu.com', 3
union all select
2, 'http://www.126.com', 1

;with cte as……
[/Quote]
在关键字 'with' 附近有语法错误。
NBDBA 2011-09-13
  • 打赏
  • 举报
回复
如果Q不会太大(超过32),可以用CTE解决
declare @t table (
id int,url nvarchar(30), Q int)
insert @t select
1, 'http://www.baidu.com', 3
union all select
2, 'http://www.126.com', 1

;with cte as (
select * from @t where Q>=1
union all
select id,url,Q=Q-1 from cte where Q>1
)
select top 1 url from cte order by NEWID()
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
楼主的意思是按比例随机获取一条记录吧???
===================
是啊
koumingjie 2011-09-13
  • 打赏
  • 举报
回复
楼主的意思是按比例随机获取一条记录吧???
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
那又怎么知道随机显示了3次 ?
===================
比如运行4次,一个出现3次,另一个出现1次
--小F-- 2011-09-13
  • 打赏
  • 举报
回复
那又怎么知道随机显示了3次 ?
tianhuo_soft 2011-09-13
  • 打赏
  • 举报
回复
比例合是多少 可以通过另设表的办法来解决
NBDBA 2011-09-13
  • 打赏
  • 举报
回复
构造个临时表,根据q数量存放url,然后order by newid()取出top 1
netvsj2ee 2011-09-13
  • 打赏
  • 举报
回复
一次显示一条
--小F-- 2011-09-13
  • 打赏
  • 举报
回复
一次显示一条还是一次显示4条?

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧