如何从mssql随机取出一条记录,看似很简单的问题

2025-04-08 06:08:35
推荐回答(3个)
回答1:

项目中客户要求随机取一个电话号码用来外呼,就试出这么个方法:
select top 1 * from 表名 order by newid()
重点在于newid()生产随机值,取多条则改成具体数量即可。

呵呵,原因是NEWID()为表是的每一行数据在内存里生成一个GUID。而因为GUID的值唯一而很随机,这样的话按GUID排序取出来的数据相对的也很随机。
除了能随机的取出一条数据,你还可以:

-- 随机取出表上的任意条数据,例如100
SELECT TOP 100 *
FROM Table1
ORDER BY NEWID()

-- 随机取出表上的10%的数据
SELECT TOP 10 PERCENT *
FROM Table1
ORDER BY NEWID()

回答2:

SELECT TOP(1) * FROM [表名] ORDER BY newid()

回答3:

select top 1 * from 表名 order by newid()