怎么随机挑选n条记录恐怕对记录作随机排序?

这段话翻译得真是费劲,干脆不管原文,直接意译了。
不过提醒大家注意,这种方法是要对整个表扫描,然后产生一个计算列再排序的,最好不要
对大的表作这样的操作,否则会很慢的。

Q. 如何得到随机排序结果?
A.
要得到随机排序的列,或者返回x条随机选择的列,你可以使用随机数。但是RAND函数在一个查询中只能返回一个结果。你可以在NOWID函数返回的列上做ORDER
BY。请看示例:
SELECT *
FROM Northwind..Orders
ORDER BY NEWID()
SELECT TOP 10 *
FROM Northwind..Orders
ORDER BY NEWID()
这段话翻译得真是费劲,干脆不管原文,直接意译了。
不过提醒大家注意,这种方法是要对整个表扫描,然后产生一个计算列再排序的,最好不要对大的表作这样的操作,否则会很慢的。
Q. How can I randomly sort query results?
A. To randomly order rows, or to return x number of randomly chosen
rows, you can use the RAND function inside the SELECT statement. But the
RAND function is resolved only once for the entire query, so every row
will get same value. You can use an ORDER BY clause to sort the rows by
the result from the NEWID function, as the following code shows:
SELECT *
FROM Northwind..Orders
ORDER BY NEWID()
SELECT TOP 10 *
FROM Northwind..Orders
ORDER BY NEWID()
―SQL Server MVPs

大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:

MySQL随机查询出一条记录:
复制代码 代码如下:
— 下面的查询语句效率高,不要使用 SELECT * FROM table1 ORDER BY rand()
LIMIT 1 来查询 SELECT * FROM table1 WHERE id=(SELECT id FROM table1
ORDER BY rand() LIMIT 1)

Q. 如何得到随机排序结果?

  B:select cast(ceiling(rand() * N) as int) —生成的数是这样的:12
  

查询结果集,随机排序
复制代码 代码如下:
SELECT * FROM table1 ORDER BY rand()

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

  SET @myid = NEWID()

MS SQL Server
复制代码 代码如下:
SELECT *
  FROM Northwind Orders
  ORDER BY NEWID()

本文适用于 SQL Server,Access 驱动没有 NEWID
函数,请参阅:如何从数据库中随机取n条记录。

  注意:

Oracle查询结果集,随机排序
复制代码 代码如下:
select * from table1 order by dbms_random.value();

—SQL Server MVPs

  另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():

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

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

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

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

Q. How can I randomly sort query results?

  下面是结果集:

A. To randomly order rows, or to return x number of randomly chosen
rows, you
can use the RAND function inside the SELECT statement. But the RAND
function is
resolved only once for the entire query, so every row will get same
value. You
can use an ORDER BY clause to sort the rows by the result from the
NEWID
function, as the following code shows:

access中的函数为Rnd()

A.
要得到随机排序的列,或者返回x条随机选择的列,你可以使用随机数。但是RAND函数在
一个查询中只能返回一个结果。你可以在NOWID函数返回的列上做ORDER
BY。请看示例:

Select top 10 Tb_PESS_Paper.* FROM Tb_PESS_永利官网ylg客户端,Paper orDER BY
Rnd(isnull(id)*0+1);

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

  现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^   

发表评论

电子邮件地址不会被公开。 必填项已用*标注