Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL?
Maksimum Kumpulan
Masalah:
Dapatkan kedudukan terkini untuk setiap keselamatan daripada yang berikut jadual:
id | security | buy_date |
---|---|---|
26 | PCS | 2012-02-08 |
27 | PCS | 2013-01-19 |
28 | RDN | 2012-04-17 |
29 | RDN | 2012-05-19 |
30 | RDN | 2012-08-18 |
31 | RDN | 2012-09-19 |
32 | HK | 2012-09-25 |
33 | HK | 2012-11-13 |
34 | HK | 2013-01-19 |
35 | SGI | 2013-01-17 |
36 | SGI | 2013-02-16 |
KERX | 2013-02-20 | |
KERX | 0000-00-00 |
Penyelesaian:
Pertanyaan berikut mendapatkan tarikh pembelian maksimum untuk setiap keselamatan, bersama-sama dengan ID yang sepadan:
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 cekap mencari kedudukan terkini untuk setiap keselamatan menggunakan gabungan kiri. Ia membandingkan tarikh belian bagi setiap keselamatan dan hanya memilih baris yang tidak wujud tarikh pembelian kemudian. Penyelesaian yang dioptimumkan ini memastikan hasil yang tepat dalam masa pelaksanaan yang lebih pantas berbanding pendekatan berasaskan subkueri.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Kedudukan Terkini untuk Setiap Keselamatan Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!