从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. 新安装ubuntu后几项配置

    新安的ubuntu13.04 为了编程方便 进行如下设置 安装右键terminal    sudo apt-get install nautilus-open-terminal 安装远程连接ssh   ...

  2. sql错误代码一览表

    http://docstore.mik.ua/orelly/java-ent/jenut/ch08_06.htm Table 8-3. SQL-92 SQLSTATE Return Codes Cla ...

  3. var genreModel =storeDB.Genres.Include("Albums").Single(g => g.Name == genre);是什么意思?

    g => g.Name == genre代表一个匿名函数.即这里向Single方法传入了一个方法类型的参数. =>左边的g代表方法的参数,可以有多个,如(g,f) => ...,=& ...

  4. FileWriter

    package file; import java.io.File; import java.io.FileWriter; import java.io.IOException; public cla ...

  5. 使用jsoup解析html页面内容案例

    public String getFaGuiKuTitles(String type, int page) { String href = "http://info.qd-n-tax.gov ...

  6. JSP标准库标签 ———C标签

    一.C标签    一] <c:out value="..." default="..." escapeXml="true">   ...

  7. web api 2 学习笔记 (OData Batch request)

    之前介绍过OData 中实现RPC的写法,今天在来一个批量操作. 参考 : https://damienbod.wordpress.com/2014/08/14/web-api-odata-v4-ba ...

  8. 51单片机I/O口使用经验

    按常规,在51端口(P1.P2.P3)某位用作输入时,必须先向对应的锁存器写入1,使FET截止.一般情况是这样,也有例外.所谓IO口内部与电源相连的上拉电阻而非一常规线性电阻,实质上,该电阻是由两个场 ...

  9. USBSpirit(USB精灵)更新到1.2.300.105

    USBSpirit(USB精灵)是CopyU!的内核引擎,CopyU!的主要功能均由该引擎提供,此次更新主要内容如下:(版本号:1.2.300.105) 1.[修复]:修复了几处引擎的资源泄露问题,提 ...

  10. 【转】ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    原文网址:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种 ...