2
嘗試這個SQLite的查詢如何使用Sequel ORM以隨機順序從SQLite獲取記錄?
SELECT * FROM `terms` ORDER BY RANDOM() LIMIT 10
有續集模型工作轉換。最近我:
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()
?
你是非常接近與'Term.order(RAND {})上限(10)'。但是你需要通過一個塊,'Term.order {rand {}} .limit(10)'來傳遞它。在當前版本中,您可以使用'Term.order {rand.function} .limit(10)'。請參閱[virtual_rows.rdoc](https://github.com/jeremyevans/sequel/blob/4.36.0/doc/virtual_rows.rdoc#sqlfunctions---sql-function-calls)。 –
@DwayneCrooks調用'Term.order {rand.function}'導致'Sequel :: DatabaseError:SQLite3 :: SQLException:沒有這樣的函數:rand'因爲'rand'不是SQLite函數,而是'Term.order {random。函數}'工作。感謝提示。 –
謝謝你指出。我的錯。 –