Jon*_*way 69
这是SO#19412的副本.这是我给那里的答案:
select top 1 * from mytable order by newid()
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2005及更高版本中,您可以使用TABLESAMPLE获取可重复的随机样本:
SELECT FirstName, LastName FROM Contact TABLESAMPLE (1 ROWS) ;
Run Code Online (Sandbox Code Playgroud)
或者使用以下查询,该查询返回更好的随机样本结果:
SELECT * FROM a_table WHERE 0.01 >= CAST(CHECKSUM(NEWID(), a_column) & 0x7fffffff AS float) / CAST (0x7fffffff AS int)
Run Code Online (Sandbox Code Playgroud)
0.01表示总行数的~1%.
引自SQL 2008联机丛书:
如果您确实需要单个行的随机样本,请修改查询以随机过滤行,而不是使用TABLESAMPLE.
| 归档时间: |
|
| 查看次数: |
45511 次 |
| 最近记录: |