从数据库中随机取记录

问题描述

假设数据库A表中有一万条记录,现在要从中随机的取出100条不重复的记录 怎么做比较合适问题补充:可以用id来区分,我的意思是只要不是同一条记录取两次或多次就行了,不太明白lggege第三步的意思,去到10个随机数之后怎么在sql中进行查询呢,而且这10个随机数中也可能有重复的值,产生随机数的时候是否要先判断是否已存在呢

解决方案

理解楼主的意思了。在这里说下我的思路,你可以去随即生成1到10000之间的随机数,定义一个int数组,这里不用集合是因为数组的查询是最快的,在性能上有很大的优势,其中int数组在初始化的时候长度定义成100,来放置我们已经随即生成过的数,这样,每生成一个,就在数组中顺次加入一个,而每次生成的新随机数,我们都可以用Arrays类中的binarySearch(int[] a, int key)方法来查看是否已经随即生成过此数,如果已经生成则逃过此数,如果没有,则对数据库进行查找。我的方法比较笨,在这里给楼主个参考
解决方案二:
LZ,lggege的思路是这样的(1)..(2)生成10个不等随机数可以用random类,生成一个之后放入一个Set中,判断set.size()>=10 ? (break) : (continue);(3)可以用id in (x,x,x...)进行查询。
解决方案三:
不知道楼主说的重复是怎么重复,按正常的数据库设计,都要为数据设置一个id字段,来区别每一条数据,如果是不能通过id来区分的话,可以写一个set集合,然后在重写他的equals和hashCode方法,通过equals方法来区分每条数据,然后放入到set集合中。这样就可以做到不重复。随即选择则可以通过像楼上的朋友说的一样,来设置随机数来查询。
解决方案四:
我倾向于从 程序这边生成10个相异的随机数, 将这10个随机数作为条件放进去查询.10个随机数的取得:(1). 查询这个表的记录数(2). 以0 - (1)得到的记录数来生成10个不等的随机数(3). 将(2)得到的随机数放到sql中送到数据库.

时间: 2024-10-22 02:13:56

从数据库中随机取记录的相关文章

从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

原文:从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO CREATE TABLE RANDTEST(ID INT DEFAULT RAND()*100,NAME NVARCHAR(200) DEFAULT 'nihao') GO CREATE INDEX IX_RANDTEST_ID ON RANDTEST(ID)

db2-DB2取100到200条记录无排序(取出数据库中固定的记录)

问题描述 DB2取100到200条记录无排序(取出数据库中固定的记录) 第一种:思路-->>现获取前100条然后查询结果集在这100条意外再取前100条记录. 代码:SELECT * FROM TABLE WHERE ID not in ( SELECT ID FROM TABLE FETCH FIRST 100 ROWS ONLY ) FETCH FIRST 100 ROWS ONLY . 第二种:思路-->>分页技术,给所有记录添加id,然后取101到200条记录. 代码:SE

C#中从sqlserver数据库中随机提取一条记录并显示在不同的文本框中

问题描述 C#中从sqlserver数据库中随机提取一条记录并显示在不同的文本框中如图 解决方案 解决方案二:SQL:selecttop1姓名,学号,班级from表orderbynewid()C#对应上就好了.

从数组中随机取x条不重复数据的JS代码

 这篇文章主要介绍了从数组中随机取x条不重复数据的JS代码,有需要的朋友可以参考一下 工作中经常遇到有关数组的一些操作    1. 从数据中随机取x条不重复的数据 (PS:下面的S.each是KISSY.each方法,大家可以改为for循环)   代码如下: /* 从数组arr中随机取x条不重复的数据  */  function myRand(arr,num){     var newArr = [];     rand(num);    //随机 x 个       function rand

asp下实现记录集内随机取记录的代码_应用技巧

记录集内随机取记录的代码 <%  ' Moving to random record - Steven Jones' Extension If Not(记录集名称.bof and 记录集名称.eof) Then ' reset the cursor to the beginning If (记录集名称.CursorType > 0) Then 记录集名称.MoveFirst Else 记录集名称.Requery End If 记录集名称_totalrn = -1 记录集名称_totalrn =

cursor-android查找数据库中是否有记录

问题描述 android查找数据库中是否有记录 在sqlite中查找是否有学号为123的记录,如果没有的话下面怎么来判断 Cursor result = db.rawQuery("SELECT 学号 FROM grade WHERE 学号 = 123", null); if(???){ Toast.makeText(TheacherView.this, "学号不存在", Toast.LENGTH_SHORT).show(); 大家看看,问号这里该写啥. 解决方案 用

sqlite-SQLite insert数据不报错,但是数据库中没有该记录

问题描述 SQLite insert数据不报错,但是数据库中没有该记录 检查了一遍,应该没什么错误啊,中间用了下cursor,为什么没有这条数据记录呢 //省略之前 sqLiteOpenHelper_userList=new SQLiteOpenHelper_UserList(User_Register.this,"UserList.db",1); //省略其他 sqLiteOpenHelper_userList.getWritableDatabase().execSQL("

从数组中随机取x条不重复数据的JS代码_javascript技巧

工作中经常遇到有关数组的一些操作 1. 从数据中随机取x条不重复的数据 (PS:下面的S.each是KISSY.each方法,大家可以改为for循环) 复制代码 代码如下: /*从数组arr中随机取x条不重复的数据 */ function myRand(arr,num){    var newArr = [];    rand(num);    //随机 x 个     function rand(k){        if(k==0){            return;        } 

编程-如何在数据库中随机生成一个n维可逆矩阵

问题描述 如何在数据库中随机生成一个n维可逆矩阵 需要在数据库中编程,产生一个n维可逆矩阵C.此矩阵应当是随机产生的. 解决方案 http://jingyan.baidu.com/article/ce436649fad5573773afd39a.html