Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Lokasi Bersejarah Terkini dengan Cekap untuk ID Rekod Diberi Menggunakan SQL?

Bagaimana untuk Mendapatkan Lokasi Bersejarah Terkini dengan Cekap untuk ID Rekod Diberi Menggunakan SQL?

DDD
DDDasal
2024-12-07 04:46:12598semak imbas

How to Efficiently Retrieve the Most Recent Historic Location for a Given Record ID Using SQL?

Mendapatkan semula Lokasi Bersejarah Menggunakan Tarikh MAX dalam Penyata Sertaan

Apabila mengambil lokasi bersejarah untuk ID rekod tertentu, pengguna menghadapi masalah prestasi dan entri pendua dalam keputusan. Pengguna cuba menangani perkara ini dengan menyertai berbilang jadual dan menapis mengikut receive_id, tetapi output yang dijangkakan tidak tercapai.

Untuk menyelesaikannya, disyorkan untuk mengubah suai pertanyaan seperti berikut:

SELECT t1.received_id
     , t1.transaction_id
     , t1.date_modified
     , l.location
  FROM transactions t1
  JOIN ( SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id) max_record
    ON max_record.received_id = t1.received_id 
   AND max_record.maxmodify = t1.date_modified
  JOIN locations l
    ON l.location_id = t1.location_id
  JOIN received r
    ON r.received_id = t1.received_id
 WHERE t1.received_id = '1782'
 ORDER 
    BY t1.date_modified DESC

Perubahan utama melibatkan penyertaan jadual urus niaga dua kali: Sekali untuk pertanyaan utama dan sekali dalam subkueri untuk mencari nilai date_modified maksimum untuk setiap received_id. Subquery ini kemudiannya digunakan untuk menapis pertanyaan utama dan hanya mengembalikan baris dengan nilai date_modified terkini.

Inti teknik ini terkandung dalam corak umum berikut:

SELECT x.*
  FROM my_table x
  JOIN (SELECT id,MAX(thing) max_thing FROM my_table GROUP BY id) y 
    ON y.id = x.id 
   AND y.max_thing = x.thing;

Ini pendekatan berkesan menghapuskan entri pendua dan memberikan hasil yang diingini iaitu memaparkan hanya masa terkini yang diubah suai untuk setiap ID rekod dan lokasi.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Lokasi Bersejarah Terkini dengan Cekap untuk ID Rekod Diberi Menggunakan SQL?. 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