如何从ID为自动增量字段的数据库中选择1个随机数。我在数据库中有25,000个[ID]记录。每次选择一个新的随机ID。 怎么能得到它。
答案 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需要一个或两个数字参数,这些参数必须都是 非负整数常数(除非使用准备好的 语句)。
答案 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在表中查找右侧行。