簡體   English   中英

在Rails 4中將SQL查詢轉換為Active Record查詢

[英]Convert SQL query to Active Record query in Rails 4

SELECT *
FROM (
   SELECT DISTINCT ON (sec)
          id, sec
   FROM   tasks
   ORDER  BY sec, id DESC
   ) sub
ORDER  BY id DESC
LIMIT  4;

我想知道上面的SQL查詢是否可以轉換為Active Record查詢。 現在,我正在使用find_by_sql ,如下所示:

Task.find_by_sql("SELECT * FROM ( SELECT DISTINCT ON (sec) id, sec FROM tasks ORDER BY sec, id DESC ) sub ORDER BY id DESC LIMIT 4")
Task.select('t.*').from(Task.distinct(:sec).select(:id, :sec).group(:sec).order('sec, id desc'), :t).order('id desc').limit(4)

或僅與分組依據一起使用(不需要區別)

Task.select('t.*').from(Task.select(:id, :sec).group(:sec).order('sec, id desc'), :t).order('id desc').limit(4)

此AR查詢將分為2個sql查詢,主要查詢和子查詢。 子查詢將檢索有關:sec屬性值的不同記錄,主查詢將按降序對它們進行排序並將記錄限制為4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM