Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Masa Lawatan Terkini untuk Setiap Pengguna Unik dalam MySQL dengan ActiveRecord?

Bagaimana untuk Mendapatkan Masa Lawatan Terkini untuk Setiap Pengguna Unik dalam MySQL dengan ActiveRecord?

Susan Sarandon
Lepaskan: 2024-10-30 06:23:03
asal
448 orang telah melayarinya

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

Menggunakan DISTINCT ON dengan MySQL dalam ActiveRecord

Apabila berurusan dengan data yang besar, selalunya perlu untuk mengekstrak maklumat unik semasa menjalankan operasi pangkalan data. Satu senario sedemikian ialah mengenal pasti lawatan terbaharu setiap pengguna yang berbeza.

Soalan:

Semasa cuba mendapatkan semula masa lawatan terkini untuk setiap pengguna unik menggunakan DISTINCT ON sintaks, ralat ActiveRecord::StatementInvalid ditemui. Pertanyaan yang digunakan ialah:

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

Penyelesaian:

Sintaks DISTINCT ON adalah khusus untuk PostgreSQL dan tidak digunakan untuk MySQL. Untuk mencapai hasil yang diingini dalam MySQL menggunakan ActiveRecord, pertanyaan harus diubah suai:

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

Output:

Pertanyaan yang diubah suai ini akan menghasilkan output yang dijangkakan, di mana kunci mewakili ID pengguna unik, dan nilai mewakili masa lawatan terbaharu mereka:

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Masa Lawatan Terkini untuk Setiap Pengguna Unik dalam MySQL dengan ActiveRecord?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan