从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()
order by
一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by
newid()随机选取记录是如何进行的
newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序.
所以最终结果再按这个排序, 排序的结果当然就是无序的了
或者
select top 10 *,newid() as
Random from ywle where ywlename='001' ordey by Random
下者效率要高些

因为newid()返回的是uniqueidentifier类型的唯一值。newid()每次产生的值都不一样,那么根据这样的值进行排序,每次的结果
也是不一样的。

原理是 把所有的ID出取然后用随机函数取出其中一个,然后用这个随机取到的ID去数据库里再取出记录,所有代价有点大。

sql server的随机函数newID()和RAND()

SELECT * FROM Northwind..Orders ORDER BY NEWID()
--随机排序

SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID()

--从Orders表中随机取出10条记录

示例

A.对变量使用 NEWID 函数
以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。在测试
uniqueidentifier 数据类型变量的值之前,先输出该值。
-- Creating a local variable with
DECLARESET syntax.
DECLARE @myid uniqueidentifier
SET @myid =
NEWID()
PRINT 'Value of @myid is '+ CONVERT(varchar(255),
@myid)
下面是结果集:
Value of @myid is
6F9619FF-8B86-D011-B42D-00C04FC964FF
注意:
NEWID
对每台计算机返回的值各不相同。所显示的数字仅起解释说明的作用。

随机函数:rand()
在查询分析器中执行:select
rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会
取随机整数。那就看下面的两种随机取整数的方法:

1、
A:select floor(rand()*N) ---生成的数是这样的:12.0
B:select cast(
floor(rand()*N) as int) ---生成的数是这样的:12

2、
A:select ceiling(rand() * N) ---生成的数是这样的:12.0
B:select
cast(ceiling(rand() * N) as int) ---生成的数是这样的:12

其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。

大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:
方法1的数字范围:0至N-1之间,如cast(
floor(rand()*100) as int)就会生成0至99之间任一整数
方法2的数字范围:1至N之间,如cast(ceiling(rand() *
100) as
int)就会生成1至100之间任一整数
对于这个区别,看SQL的联机帮助就知了:
------------------------------------------------------------------------------------

比较 CEILING 和 FLOOR

CEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式
12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING
返回值的数据类型都与输入的数字表达式的数据类型相同。
----------------------------------------------------------------------------------
现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^

另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():
select top N * from
table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数.

从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()
order by
一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by
newid()随机选取记录是如何进行的
newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序.
所以最终结果再按这个排序, 排序的结果当然就是无序的了
或者
select top 10 *,newid() as
Random from ywle where ywlename='001' ordey by Random
下者效率要高些

因为newid()返回的是uniqueidentifier类型的唯一值。newid()每次产生的值都不一样,那么根据这样的值进行排序,每次的结果
也是不一样的。

原理是 把所有的ID出取然后用随机函数取出其中一个,然后用这个随机取到的ID去数据库里再取出记录,所有代价有点大。

sql server的随机函数newID()和RAND()

SELECT * FROM Northwind..Orders ORDER BY NEWID()
--随机排序

SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID()

--从Orders表中随机取出10条记录

示例

A.对变量使用 NEWID 函数
以下示例使用 NEWID() 对声明为 uniqueidentifier 数据类型的变量赋值。在测试
uniqueidentifier 数据类型变量的值之前,先输出该值。
-- Creating a local variable with
DECLARESET syntax.
DECLARE @myid uniqueidentifier
SET @myid =
NEWID()
PRINT 'Value of @myid is '+ CONVERT(varchar(255),
@myid)
下面是结果集:
Value of @myid is
6F9619FF-8B86-D011-B42D-00C04FC964FF
注意:
NEWID
对每台计算机返回的值各不相同。所显示的数字仅起解释说明的作用。

随机函数:rand()
在查询分析器中执行:select
rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会
取随机整数。那就看下面的两种随机取整数的方法:

1、
A:select floor(rand()*N) ---生成的数是这样的:12.0
B:select cast(
floor(rand()*N) as int) ---生成的数是这样的:12

2、
A:select ceiling(rand() * N) ---生成的数是这样的:12.0
B:select
cast(ceiling(rand() * N) as int) ---生成的数是这样的:12

其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。

大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:
方法1的数字范围:0至N-1之间,如cast(
floor(rand()*100) as int)就会生成0至99之间任一整数
方法2的数字范围:1至N之间,如cast(ceiling(rand() *
100) as
int)就会生成1至100之间任一整数
对于这个区别,看SQL的联机帮助就知了:
------------------------------------------------------------------------------------

比较 CEILING 和 FLOOR

CEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式
12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING
返回值的数据类型都与输入的数字表达式的数据类型相同。
----------------------------------------------------------------------------------
现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^

另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():
select top N * from
table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数.

(转)SQL NEWID()随机函数的更多相关文章

  1. sql newid()随机函数

    从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()order by 一般是根据某一字段排序,newid()的返回值 是uniqueidenti ...

  2. sql server newid() 的用法

    sql newid()随机函数   从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()order by 一般是根据某一字段排序,newid() ...

  3. Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

    Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...

  4. sql杂记

    Create procedure 存储过程的声明 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列传行 ...

  5. sql取随机结果集

    应用场景: 某日,接产品姐姐需求,网站搜索页在搜索特定的内容时候,会现实搜索不到结果!如衣服网站,搜索鞋子等.为了不直接呈现一个赤裸裸的无此商品页面,so,需要在搜索商品件数小于3时,在下面随机推荐本 ...

  6. ylb:SQL 系统函数

    ylbtech-SQL Server: SQL Server-SQL 系统函数 SQL 系统函数 1,ylb:SQL 系统函数 返回顶部 -- ============================ ...

  7. SQL函数汇总大全

    聚合函数对一组值计算后返回单个值.除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null).所有的聚合函数均为确定性函数.即任何时候使用一组相同的输入值调用聚合函数执行后的返 ...

  8. MySQL使用rand函数实现随机数[转]

    如何写一个语句能一下更新几百条MYSQL数据! 需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文件一下每次更新几百条信息,我都是写一个循环一次更新一条信息,这样我知道用WHI ...

  9. MySQL使用rand函数实现随机数

    sql 的随机函数newID()和RAND() sql server的随机函数newID()和RAND() SELECT * FROM Northwind..Orders ORDER BY NEWID ...

随机推荐

  1. 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用

    5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在P ...

  2. 将Activity设置成半透明的对话框

    将Activity设置成半透明的对话框 在定义Activity时指定Theme.Dialog主题就可以将Activity设置成对话框风格.通过修饰Theme.Dialog主题的android:wind ...

  3. haslayout和BFC

    感谢CSS涛的分享,参考文章: (1)haslayout:http://aibusy.com/blog/?p=53 (2)BFC 神奇背后的原理:http://aibusy.com/blog/?p=8 ...

  4. asp.net 字符帮助类 类型转换类

    /// <summary> /// 字符帮助类 /// </summary> public class StringHelper { private static readon ...

  5. 成功启动了Apache却没有启动apache服务器

    原因没有用管理员身份运行...

  6. PCB走线和过孔的过流能力

    PCB走线的载流能力与以下因素有关:线宽.线厚(铜箔厚度).容许温升.PCB走线越宽,载流能力越大. 近似计算公式: I=KT0.44A0.75 (K为修正系数,一般覆铜线在内层时取0.024,在外层 ...

  7. 【转】android应用开发全程实录-你有多熟悉listview?---不错

    原文网址:http://www.cnblogs.com/noTice520/archive/2011/12/05/2276379.html 今天给大家带来<android应用开发全程实录> ...

  8. HDU_2016——数据的交换输出

    Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.   Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这 ...

  9. [LeetCode] 116. Populating Next Right Pointers in Each Node 解决思路

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  10. typedef与define的区别

    1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define PI 3.1415 ...