如何从SQLite中的表中获取随机记录?这是为了“每日一词”从数据库中获取今天的随机记录,明天的不同随机记录。ORDER BY RAND(20120714) LIMIT 1在MySQL中工作,但如何在SQLite中做到这一点?
ORDER BY RAND(20120714) LIMIT 1
0sgqnhkj1#
SQLite不允许种子随机数生成器。你必须在自己的代码中计算随机数。只有当记录具有连续的数字时,这才容易,即自动递增的ID;你应该改变你的数据库。
ss2ws0br2#
我的解决方案是:
select * from table limit 1 offset (select julianday()%<num_of_rows> from table);
字符串你可以很容易地用查询计算num_of_rows(你甚至可以把它作为一个子查询嵌入到上面的查询中):
num_of_rows
select count(*) from table;
型
julianday()是一个SQLite function,它返回今天的Julian Day。要获取表中的行,您需要做的就是计算偏移量:julian_day % rows_in_table的值。
julianday()
julian_day % rows_in_table
2条答案
按热度按时间0sgqnhkj1#
SQLite不允许种子随机数生成器。
你必须在自己的代码中计算随机数。只有当记录具有连续的数字时,这才容易,即自动递增的ID;你应该改变你的数据库。
ss2ws0br2#
我的解决方案是:
字符串
你可以很容易地用查询计算
num_of_rows
(你甚至可以把它作为一个子查询嵌入到上面的查询中):型
说明
julianday()
是一个SQLite function,它返回今天的Julian Day。要获取表中的行,您需要做的就是计算偏移量:
julian_day % rows_in_table
的值。