使用asp.net c#

时间:2015-06-20 06:37:16

标签: mysql random

如何从ID为自动增量字段的数据库中选择1个随机数。我在数据库中有25,000个[ID]记录。每次选择一个新的随机ID。 怎么能得到它。

2 个答案:

答案 0 :(得分:1)

您可以使用以下query生成0到COUNT - 1个表行之间的随机数:

SELECT ROUND((RAND() * (SELECT COUNT(*) FROM mytable)-1)) 

然后在查询的LIMIT子句中将此数字用作偏移量,以从表中获取随机行。

使用预备声明,您可以执行以下操作:

SET @offset = (SELECT ROUND((RAND() * (SELECT COUNT(*) FROM mytable)-1)));

PREPARE STMT FROM 'SELECT * FROM mytable LIMIT ?, 1';
EXECUTE STMT USING @offset;

请注意,必须使用准备好的声明,因为manual

中有记录
  

LIMIT需要一个或两个数字参数,这些参数必须都是   非负整数常数除非使用准备好的   语句)。

Demo here

答案 1 :(得分:0)

使用以下sql(慢)

'SELECT * FROM tablename ORDER BY RAND() LIMIT 1'

或者您可以使用(快速)

SELECT * FROM myTable, (SELECT FLOOR(MAX(myTable.id) * RAND()) AS randId FROM myTable) AS someRandId WHERE myTable.id = someRandId.randId 

内部SELECT为您提供正确范围内的随机ID。 外部SELECT在表中查找右侧行。