Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL dengan Cekap?
Maksimum Mengikut Kumpulan: Mendapatkan Kedudukan Terkini untuk Setiap Keselamatan
Dalam set data yang disediakan, anda menyasarkan untuk mendapatkan semula kedudukan terkini untuk setiap keselamatan. Anda telah cuba menggunakan pertanyaan berdasarkan fungsi agregat MAX(), tetapi ia hanya mengembalikan satu baris.
Untuk menangani perkara ini, anda boleh menggunakan pendekatan alternatif yang menggunakan LEFT JOIN. Di bawah ialah pertanyaan yang dioptimumkan yang mencapai hasil yang diperlukan dengan cekap:
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;
Pertanyaan ini melakukan gabungan luar jadual dengan dirinya sendiri, tidak termasuk baris yang tarikh pembelian kemudian wujud untuk keselamatan yang sama. Akibatnya, ia mengembalikan satu baris untuk setiap keselamatan dengan tarikh pembelian terkini.
Dengan menggunakan pendekatan yang dioptimumkan ini, anda boleh mengurangkan masa pelaksanaan pertanyaan dengan ketara dan mendapatkan maklumat yang diingini dengan cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!