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