Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Data Lokasi Terkini dalam MySQL Dengan Cekap Menggunakan Penyata JOIN?

Bagaimana untuk Menyoal Data Lokasi Terkini dalam MySQL Dengan Cekap Menggunakan Penyata JOIN?

Susan Sarandon
Susan Sarandonasal
2024-12-04 08:27:121027semak imbas

How to Efficiently Query for the Most Recent Location Data in MySQL Using JOIN Statements?

Mencari Tarikh Maksimum dalam Penyata Sertai untuk MySQL

Untuk mendapatkan semula lokasi bersejarah rekod dalam MySQL, anda boleh menggunakan pernyataan JOIN . Walau bagaimanapun, apabila menghadapi isu prestasi dan data pendua dalam keputusan, pendekatan yang diubah suai diperlukan.

Pertanyaan Diubahsuai

Untuk mendapatkan hanya masa terkini yang diubah suai untuk setiap ID rekod dan lokasi, pertimbangkan pertanyaan 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

Kunci Pengubahsuaian

Pengubahsuaian terletak pada subkueri:

SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id

Subkueri ini mendapatkan tarikh maksimum untuk setiap received_id.

Menyertai pada Maksimum

Pertanyaan utama kemudiannya bergabung pada subkueri ini menggunakan dua syarat:

  1. max_record.received_id = t1.received_id: memastikan ID rekod sepadan.
  2. max_record.maxmodify = t1.date_modified: memilih hanya transaksi dengan tarikh maksimum.

Dengan menyertai pada tarikh maksimum, anda menghapuskan hasil pendua dan menangkap sahaja perubahan lokasi terbaharu.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Data Lokasi Terkini dalam MySQL Dengan Cekap Menggunakan Penyata JOIN?. 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