Rumah >pangkalan data >tutorial mysql >Bagaimana Mencari Kedudukan Terkini dengan Cekap untuk Setiap Keselamatan dalam Pangkalan Data?

Bagaimana Mencari Kedudukan Terkini dengan Cekap untuk Setiap Keselamatan dalam Pangkalan Data?

Susan Sarandon
Susan Sarandonasal
2025-01-05 02:07:40884semak imbas

How to Efficiently Find the Most Recent Position for Each Security in a Database?

Maksimum Mengikut Kumpulan

Anda cuba mendapatkan semula kedudukan terbaharu untuk setiap keselamatan daripada jadual tertentu. Untuk mencapai matlamat ini, anda boleh menggunakan pertanyaan berikut:

SELECT p1.id, 
       p1.security, 
       p1.buy_date 
       FROM positions p1
LEFT JOIN
            positions p2
                ON p1.security = p2.security
                   AND p1.buy_date < p2.buy_date
      WHERE 
      p2.id IS NULL;

Dalam pertanyaan ini, gabungan kiri digunakan untuk membandingkan setiap baris dalam jadual kedudukan dengan setiap baris lain dengan keselamatan yang sama. Lajur tarikh_beli digunakan untuk menentukan baris mana yang paling terkini. Klausa WHERE kemudiannya menapis mana-mana baris yang bukan yang paling terkini untuk keselamatan masing-masing.

Hasil pertanyaan ini akan menjadi jadual dengan satu baris untuk setiap keselamatan, yang mengandungi id, keselamatan dan keselamatan terkini. buy_date untuk keselamatan itu.

Pertanyaan ini lebih cekap daripada pendekatan berasaskan subkueri yang anda cuba sebelum ini kerana ia tidak memerlukan berbilang laluan melalui jadual kedudukan. Sebaliknya, ia menggunakan gabungan tunggal untuk mengenal pasti baris terbaharu bagi setiap keselamatan, menjadikannya lebih pantas untuk set data yang besar.

Atas ialah kandungan terperinci Bagaimana Mencari Kedudukan Terkini dengan Cekap untuk Setiap Keselamatan dalam Pangkalan Data?. 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