ruby - 如何使用 Sequel ORM 以随机顺序从 SQLite 获取记录?

标签 ruby sqlite sequel

尝试转换此 SQLite 查询

SELECT * FROM `terms` ORDER BY RANDOM() LIMIT 10

使用 Sequel 模型。我得到的最接近的:

Term.order(rand{}).limit(10)
Term.order('random ()').limit(10)

转化为

<Sequel::SQLite::Dataset: "SELECT * FROM `terms` ORDER BY 0.6160215951854449 LIMIT 10">
<Sequel::SQLite::Dataset: "SELECT * FROM `terms` ORDER BY 'random ()' LIMIT 10">

但两者都不起作用。有没有办法将 SQLite 或其他特定于数据库的函数传递给 Sequel 的 order()

最佳答案

使用 Sequel.lit表达有效:

Term.order(Sequel.lit('RANDOM()')).limit(10)

关于ruby - 如何使用 Sequel ORM 以随机顺序从 SQLite 获取记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306059/

相关文章:

ruby - 使用 Redis/Ohm 按日期时间排序

ruby 运算符与铲子 (<<) 和 += 混淆,连接数组

c++ - C++ 可以包含在 Ruby C 扩展中吗?

ruby - Head 用法未知选项 -1/-n 错误。可能与 ruby 有关

android - 将现有 SQLite 数据库导入 Android 应用程序

c# - 如何检查数据读取器是否为空或为空 - 错误

sql - 比较SQLite中的两个表

mysql - Sequel gem & MySQL (Ruby + Windows) : load mysql. so文件,不是mysql.rb

ruby - SEQUEL Postgres 连接查询

ruby - 使用 Ruby Sequel 清理关联定义