先查询出所有的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>
我这里给你一个 类似的例子, 表结构也就是简单的 分类, 明细
要查询每个分类下面, 随机明细 几条的情况
你可以参考参考
测试表与测试数据。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)
Select Top 5 From 表名 Order By NEWID() , newid 产生的新的值是不固定的 。 在Select表里的数据的NEWID() 函数时候 随即选出N条记录 。希望能够帮助你 。
这个没必要用一条sql语句来实现,可以采用变通的办法,你在C#程序中定义一个list,每次从数据库中随机抽取一条数据后将这条数据的id放入list中,下次随机抽取数据后去判断这条数据的id是否在list中,如果在则说明重复了,丢弃这条数据重新再取,这可能会有一定的效率损失,但是随机数重复的可能性本来就很小,这点效率损失没什么大不了的。
1、Oracle访问数据的基本方法: 1)、全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。 Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次 这样全表扫描能够受益于多块读 2)、采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项 注:从Oracle8i开始Oracle提供采样表扫描特性
OleDbConnection conn = new OleDbConnection();//这个要open的,我就不详细写了
string tableName = "表名";//表的名称
DataSet ds = new DataSet();//DataSet是表的集合
string sql = "select from " + tableName;//sql语句查询数据
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);//从数据库中查询
daFill(ds, tableName);//将数据填充到DataSet
int recordCount = dsTables[tableName]RowsCount;//记录的数量
int randomNumber = new Random()Next(recordCount);//取得一个随机整数
dsTables[tableName]Rows[randomNumber]//调用该随机记录
以上就是关于asp.net怎么从数据库中随机抽取数据全部的内容,包括:asp.net怎么从数据库中随机抽取数据、mysql数据库中随机抽取该分类下的几条数据怎么写、如何从sql数据库里随机取20条记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)