怎么从一个表中随机取一条数据

怎么从一个表中随机取一条数据,第1张

oracle随机读取表中的N条数据方法:

1) select  from (select  from tablename order by sys_guid()) where rownum < N; 

2) select  from (select  from tablename order by dbms_randomvalue) where rownum< N; 

3) select   from (select  from table_name sample(10)   order by trunc(dbms_randomvalue(0, 1000)))  where rownum < N;

说明: 

sample(10)含义为检索表中的10%数据,sample值应该在[0000001,99999999]之间,其中 sys_guid() 和 dbms_randomvalue都是内部函数

注:

在使1)方法时,即使用sys_guid() 这种方法时,有时会获取到相同的记录,即:和前一次查询的结果集是一样的(可能是和 *** 作系统有关:windows正常,linux异常;也可能是因为sys_guid()函数本身的问题,有待继续研究)

所以,为确保在不同的平台每次读取的数据都是随机的,建议采用2)和3)两种方案,其中2)方案更常用。3)方案缩小了查询的范围,在查询大表,且要提取数据不是很不多的情况下,会对查询速度上有一定的提高

先查询出所有的ID放在一个数组里面。

另外你再参考一下我的32选7的**代码 就应该会明白了!

<script>

var Number=new Array(6);

var Time;

var shu=10;

function RandomNum()

{

for(var i=0;i<Numberlength;i++)

{

Number[i]=parseInt(Mathrandom()32+1);

for(var n=0;n<i;n++){

if (Number[i] == Number[n])

{

Number[i]=parseInt(Mathrandom()32+1);

}

}

}

var obj=documentgetElementsByName("num");

for(var i=0;i<objlength;i++)

{

obj[i]value=Number[i];

}

documentgetElementById("num1")value=parseInt(Mathrandom()16+1);

Time = setTimeout("RandomNum()",shu)

shu=shu+1;

if(shu>=50)

{

clearTimeout(Time);

documentgetElementById("btnOK")value="买好离手啊"

shu=0;

}

}

</script>

Select Top 5 From 表名 Order By NEWID() , newid 产生的新的值是不固定的 。 在Select表里的数据的NEWID() 函数时候 随即选出N条记录 。希望能够帮助你 。

四种数据库随机获取10条数据的方法

SQL Server:

SELECT TOP 10 FROM T_USER ORDER BY NEWID()

ORACLE:

SELECT FROM (SELECT FROM T_USER ORDER BY DBMS_RANDOMRANDOM()) WHERE RONUM <= 10

MySQL:

SELECT FROM T_USER ORDER BY RAND() LIMIT 10

Access:

SELECT TOP 10 FROM T_USER ORDER BY rnd([一个自动编号字段])

这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASPNET等后台程序代码中却无法得到预期的随机效果。

正确的写法如下:

以ASPNET为例:

Random random = new Random(SystemGuidNewGuid()GetHashCode());

int r = randomNext();

string sql = "SELECT TOP 10 FROM T_USER ORDER BY RND(" + (-r) + "自动编号字段)"

我这里给你一个  类似的例子,   表结构也就是简单的   分类,  明细

要查询每个分类下面,   随机明细  几条的情况

你可以参考参考

测试表与测试数据。

CREATE TABLE test_order_by_rand (group_code varchar(10), name varchar(10));

INSERT INTO test_order_by_rand VALUES('水果', '苹果');

INSERT INTO test_order_by_rand VALUES('水果', '梨子');

INSERT INTO test_order_by_rand VALUES('水果', '香蕉');

INSERT INTO test_order_by_rand VALUES('水果', '桃子');

INSERT INTO test_order_by_rand VALUES('水果', '菠萝');

INSERT INTO test_order_by_rand VALUES('蔬菜', '萝卜');

INSERT INTO test_order_by_rand VALUES('蔬菜', '白菜');

INSERT INTO test_order_by_rand VALUES('蔬菜', '蘑菇');

INSERT INTO test_order_by_rand VALUES('蔬菜', '毛豆');

INSERT INTO test_order_by_rand VALUES('蔬菜', '青椒');

INSERT INTO test_order_by_rand VALUES('坚果', '核桃');

INSERT INTO test_order_by_rand VALUES('坚果', '榛子');

INSERT INTO test_order_by_rand VALUES('坚果', '杏仁');

INSERT INTO test_order_by_rand VALUES('坚果', '花生');

INSERT INTO test_order_by_rand VALUES('坚果', '开心果');

预期目标, 按照 group_code 进行分组, 每个分组内, 进行随机获取数据SELECT

  group_code,

  name

FROM

(

SELECT

  CASE 

    WHEN @cn != group_code THEN @rownum:= 1 

    ELSE @rownum:= @rownum + 1  

    END AS No,

  group_code,

  @cn := group_code AS group_code,

  name

FROM

  (SELECT @rownum:=0) r,

  (SELECT @cn:= '') p,

  (SELECT  FROM test_order_by_rand order by group_code, rand()) tmp

)  subQuery

WHERE

  No <= 3

ORDER BY

  group_code;

  

  

这里套了2层子查询, 其中的

(SELECT  FROM test_order_by_rand order by group_code, rand()) tmp  

用于实现, 针对每一个  group_code 进行分组, 下属的 name 的数据, 进行随机排序

其中的

()  subQuery

用于实现, 针对 前面的 按 group_code 分组, name 随机排序后的数据。

模拟一个  row_number() over(partition by group_code) 的处理

最后的 No <= 3 用于限制, 每一个 group_code 下面, 显示多少行

执行结果:

+------------+--------+

| group_code | name   |

+------------+--------+

| 水果       | 苹果   |

| 水果       | 香蕉   |

| 水果       | 梨子   |

| 蔬菜       | 青椒   |

| 蔬菜       | 白菜   |

| 蔬菜       | 蘑菇   |

| 坚果       | 核桃   |

| 坚果       | 花生   |

| 坚果       | 开心果 |

+------------+--------+

9 rows in set (000 sec)

以上就是关于怎么从一个表中随机取一条数据全部的内容,包括:怎么从一个表中随机取一条数据、asp.net怎么从数据库中随机抽取数据、如何从sql数据库里随机取20条记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/9555820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存