Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencari Lawatan Terkini untuk Setiap Pengguna dalam MySQL dengan ActiveRecord?

Bagaimana untuk Mencari Lawatan Terkini untuk Setiap Pengguna dalam MySQL dengan ActiveRecord?

asal
2024-10-30 01:36:28830semak imbas

How to Find the Latest Visit for Each User in MySQL with ActiveRecord?

Cara Mencari Lawatan Terkini untuk Pengguna Cemerlang dalam MySQL dengan ActiveRecord

Menghadapi ralat sintaks semasa cuba menggunakan fungsi DISTINCT ON dengan MySQL dalam ActiveRecord? Berikut ialah penyelesaian:

Pertanyaan awal:

Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')

mengembalikan ralat kerana DISTINCT ON tidak disokong oleh MySQL. Sebaliknya, anda boleh menggunakan gabungan GROUP BY dan MAX untuk mencapai hasil yang diingini.

Pertanyaan diubah suai:

Events.group(:user_id).maximum(:time)

Pertanyaan ini akan mengumpulkan acara mengikut user_id dan mencari masa maksimum untuk setiap kumpulan, dengan berkesan memberi anda lawatan terkini untuk setiap pengguna yang berbeza.

Output yang Dijangka:

{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}

Perhatikan bahawa format cap masa mungkin berbeza-beza bergantung pada konfigurasi pangkalan data anda .

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

Kenyataan:
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