首頁  >  文章  >  資料庫  >  如何使用 ActiveRecord 檢索 MySQL 中每個唯一使用者的最近造訪時間?

如何使用 ActiveRecord 檢索 MySQL 中每個唯一使用者的最近造訪時間?

Susan Sarandon
Susan Sarandon原創
2024-10-30 06:23:03388瀏覽

How to Retrieve the Most Recent Visit Time for Each Unique User in MySQL with ActiveRecord?

在 ActiveRecord 中使用 DISTINCT ON 與 MySQL

處理大量資料時,通常需要在執行資料庫操作時提取唯一資訊。其中一個場景是識別每個不同使用者的最新訪問。

問題:

嘗試使用 DISTINCT ON 檢索每個唯一使用者最近的存取時間語法時,遇到 ActiveRecord::StatementInvalid 錯誤。使用的查詢是:

<code class="ruby">Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')</code>

解決方案:

DISTINCT ON 語法特定於 PostgreSQL,不適用於 MySQL。要使用ActiveRecord 在MySQL 中獲得所需的結果,應修改查詢:

<code class="ruby">Events.group(:user_id).maximum(:time)</code>

輸出:

此修改後的查詢將產生預期的輸出,其中鍵代表唯一的使用者ID,數值代表最近造訪的時間:

{21=>Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23=>Thu, 20 Dec 2018 06:42:10 UTC +00:00}

以上是如何使用 ActiveRecord 檢索 MySQL 中每個唯一使用者的最近造訪時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn