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

Bagaimana untuk Mencari Kedudukan dan ID Terkini untuk Setiap Keselamatan dalam Pangkalan Data?

Susan Sarandon
Susan Sarandonasal
2025-01-04 13:33:39709semak imbas

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

Maksimum Mengikut Kumpulan

Masalah:

Dapatkan semula kedudukan terkini dan ID yang sepadan untuk setiap keselamatan dalam jadual yang mengandungi berbilang kedudukan dengan keselamatan yang sama.

Data 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
18084 KERX 2013-02-20
18249 KERX 0000-00-00

Penyelesaian:

Menggunakan LEFT JOIN dan NULL-filtering:

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, kami menggunakan LEFT JOIN untuk menggabungkan jadual kedudukan dengan dirinya sendiri, memadankan baris dengan keselamatan. Syarat p1.buy_date < p2.buy_date memastikan bahawa p2 mewakili kedudukan yang lebih terkini untuk keselamatan yang sama.

Klausa WHERE kemudiannya menapis mana-mana baris di mana kedudukan yang lebih terkini wujud, meninggalkan kami dengan hanya kedudukan terkini untuk setiap keselamatan.

Keputusan:

id security buy_date
27 PCS 2013-01-19
31 RDN 2012-09-19
34 HK 2013-01-19
36 SGI 2013-02-16
18084 KERX 2013-02-20

Atas ialah kandungan terperinci Bagaimana untuk Mencari Kedudukan dan ID Terkini 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