如何使用ActiveRecord 在MySQL 中尋找不同使用者的最新存取
嘗試使用DISTINCT ON 函數時遇到語法錯誤ActiveRecord 中的SQLMy ?解如下:
初始查詢:
Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')
回傳錯誤,因為 MySQL 不支援 DISTINCT ON。相反,您可以使用 GROUP BY 和 MAX 的組合來實現所需的結果。
修改後的查詢:
Events.group(:user_id).maximum(:time)
此查詢將按user_id 對事件進行分組,並找到最長時間每個群組,有效地為您提供每個不同用戶的最新訪問。
預期輸出:
{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}
請注意,時間戳格式可能會根據您的資料庫配置而有所不同.
以上是如何使用ActiveRecord尋找MySQL中每個使用者的最新存取情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!