Rumah > Artikel > pangkalan data > Bagaimana untuk Mencari Lawatan Terkini untuk Setiap Pengguna dalam MySQL dengan 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!