Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Menyertai Baris Terkini dari Jadual Sejarah dalam MySQL?

Bagaimana untuk Cekap Menyertai Baris Terkini dari Jadual Sejarah dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-02 15:39:40487semak imbas

How to Efficiently Join the Most Recent Row from a Historical Table in MySQL?

Menyertai Baris Terkini dalam MySQL

Memandangkan dua jadual, pelanggan dan data_pelanggan di mana yang terakhir mengandungi rekod sejarah perubahan pelanggan, tugas di tangan adalah untuk mendapatkan semula maklumat pelanggan sambil memastikan hanya entri terbaharu daripada customer_data disertakan kepada setiap pelanggan dalam jadual pelanggan.

Untuk mencapai ini, pertimbangkan menggunakan klausa WHERE dan bukannya badan pertanyaan utama, kerana ia memberikan prestasi yang lebih baik dan kebolehbacaan kod. Berikut ialah pertanyaan yang dioptimumkan:

SELECT c.*,
       CONCAT(title, ' ', forename, ' ', surname) AS name
FROM customer c
LEFT JOIN customer_data d
ON c.customer_id = d.customer_id
WHERE d.customer_id = (
    SELECT MAX(customer_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
)
LIMIT 10, 20;

Pertanyaan ini memastikan bahawa hanya baris terbaharu daripada customer_data digabungkan untuk setiap pelanggan dalam pelanggan dengan menapisnya dalam klausa WHERE. LEFT JOIN memastikan semua pelanggan daripada pelanggan disertakan dalam keputusan, walaupun mereka tidak mempunyai entri yang sepadan dalam customer_data.

Mengenai kebimbangan anda tentang menggunakan CONCAT dan LIKE bersama-sama, anda betul. CONCAT menggabungkan rentetan, dan rentetan yang terhasil boleh digunakan dengan operator LIKE untuk melakukan padanan corak. Pertanyaan anda adalah sah dalam aspek itu.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menyertai Baris Terkini dari Jadual Sejarah dalam MySQL?. 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