我试图使用rand()或newid()来选择记录的随机子集,但是每当我运行以下命令时,我总是会得到相同的结果:

SELECT *,rand() as rid
INTO #mytable
FROM othertable

select top 10 * from #mytable order by rid


我已经尝试过这种方法的所有变体,但是当我像上面那样做时,似乎sybase服务器iq总是返回相同的rand()值。当我尝试去做

SELECT * FROM othertable order by newid()


我收到一条错误消息,指出按顺序使用newid()是非法的。

有什么建议?

最佳答案

在Sybase T-SQL中,NEWID()系统函数生成人类可读的全局唯一ID。在目标表上发出SELECT语句时,在ORDER BY子句中包括NEWID()系统函数。

用法:

SELECT top 10 id from TABLE order by NEWID();

关于sql - 在SQL中选择随机子集(Sybase Server IQ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9792676/

10-12 13:54