sqlite 如何选择随机行?

3bygqnnd  于 2023-08-06  发布在  SQLite
关注(0)|答案(2)|浏览(122)

如何从SQLite中的表中获取随机记录?这是为了“每日一词”从数据库中获取今天的随机记录,明天的不同随机记录。
ORDER BY RAND(20120714) LIMIT 1在MySQL中工作,但如何在SQLite中做到这一点?

0sgqnhkj

0sgqnhkj1#

SQLite不允许种子随机数生成器。
你必须在自己的代码中计算随机数。只有当记录具有连续的数字时,这才容易,即自动递增的ID;你应该改变你的数据库。

ss2ws0br

ss2ws0br2#

我的解决方案是:

select * from table limit 1 offset (select julianday()%<num_of_rows> from table);

字符串
你可以很容易地用查询计算num_of_rows(你甚至可以把它作为一个子查询嵌入到上面的查询中):

select count(*) from table;

说明

julianday()是一个SQLite function,它返回今天的Julian Day
要获取表中的行,您需要做的就是计算偏移量:julian_day % rows_in_table的值。

相关问题