處理大量資料時,通常需要在執行資料庫操作時提取唯一資訊。其中一個場景是識別每個不同使用者的最新訪問。
問題:
嘗試使用 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中文網其他相關文章!