Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL dengan Cekap?

Bagaimana untuk Mendapatkan Kembali Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2025-01-04 18:11:42465semak imbas

How to Efficiently Retrieve the Latest Position for Each Security Using SQL?

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!

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