日期:2014-05-18  浏览次数:20659 次

如何用Select语句进行随机选择?
有一条语句如下:
select   top   1   ids   from   [tb]

返回的ids是:
,1,7,9,5,10

现在我想让返回的结果是随机里面的一个


1
或是
5
....

------解决方案--------------------
select top 1 ids from [tb] order by newid()


------解决方案--------------------
order by newid()
------解决方案--------------------
select top 1 ids from [tb] order by newid()
--这个不行么?这个就是随机返回一条数据,楼主运行看一下就知道了,否则再把问题说清楚点
------解决方案--------------------
搂主问题没说明百啊 ids是一系统的字符串是什么意思 不记得系统自带字符串过 如果ids跟top1显示的没有什么关系 你字符串是 set @ids= ',1,7,9,5,10 ' ?糊涂了
------解决方案--------------------
把字符串用逗号分隔,插入一张临时表,再用order by newid()
------解决方案--------------------
楼上的,好像实现不了吧
------解决方案--------------------
declare @a varchar(20)
declare @b int
declare @c int
declare @d int
set @a = ',1,7,9,5,10 '
set @b = 1
set @c = round(rand()*((len(replace(@a, ', ', '12 '))-len(@a))-1),0)+1
set @d = 1
while (@d <= @c)
begin
set @a = stuff(@a,1,@b, ' ')
set @b = charindex( ', ',@a)
set @d = @d + 1
end
if(@b=0)
select @a
else
select left(@a,@b-1)

搂住自己会改吧