1、Access
尽管在Access的sql视图下可以根据select top 5 * from tb order by rnd(field_id);实现,但是如果在应用程序中执行这条语句每次得到的结果总是一样;个人感觉这是由于随机种子没有被初始化。因此,需要利用程序,帮助其初始化随机种子。

System.Random rnd = new System.Random();
string iTmp = rnd.Next(10000).ToString();
string sql = "SELECT TOP 5 * FROM [tb] ORDER BY RND(-([ID] + "+iTmp+"))";

 

2、SQL Server
select top 5 * from tb order by newid();

 

3、Oracle

产生一个随机id列表,然后与实体表join得到对应的记录;因此,问题的重点在于产生一个随机id列表。

产生一个随机id列表的sql语句如下:
select trunc(dbms_random.value(1, 5000)) as id from tablename where rownum < 6;  

   
说明:dbms_random.value(1, 5000)是取1到5000间的随机数,会有小数, trunc函数对随机数字取整,才能和临时表的整数ID字段相对应。


 

相关文章:

  • 2021-07-08
  • 2021-06-16
  • 2021-09-08
  • 2021-06-27
  • 2022-12-23
  • 2021-11-17
  • 2021-09-22
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-09
  • 2021-11-14
  • 2022-01-06
  • 2022-12-23
  • 2022-02-20
  • 2022-12-23
相关资源
相似解决方案