LEFT JOIN Hanya Baris Pertama
Dalam dunia pertanyaan pangkalan data, operasi LEFT JOIN ialah alat yang berkuasa untuk menggabungkan data daripada berbilang meja. Walau bagaimanapun, kadangkala anda mungkin menghadapi cabaran untuk mengambil semula baris pertama sahaja dari LEFT JOIN secara terpilih, yang membawa kepada kekeliruan dan keputusan yang kelihatan tidak berjaya.
Satu senario sedemikian melibatkan pengambilan hanya artis pertama yang dikaitkan dengan suapan. Pertimbangkan struktur pangkalan data yang dipermudahkan berikut:
Untuk mendapatkan semula suapan yang ditetapkan dan artis pertama yang sepadan, pendekatan intuitif mungkin melibatkan sesuatu seperti berikut:
SELECT * FROM feeds LEFT JOIN feeds_artists ON feeds.id = ( SELECT feeds_artists.feed_id FROM feeds_artists WHERE feeds_artists.feed_id = feeds.id LIMIT 1 ) WHERE feeds.id = '13815'
Walau bagaimanapun, pertanyaan ini mungkin tidak menghasilkan hasil yang diingini. Sebaliknya, cuba pertanyaan dioptimumkan berikut:
SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT artist_id FROM feeds_artists fa WHERE fa.feed_id = f.id LIMIT 1 ) WHERE f.id = '13815'
Dalam pertanyaan ini, muslihatnya terletak pada menggunakan pertanyaan sebaris dalam pernyataan LEFT JOIN. Pertanyaan sebaris ini memilih artist_id artis terawal yang dikaitkan dengan setiap suapan, dengan memanfaatkan andaian bahawa ID artis meningkat dari semasa ke semasa. Akibatnya, pertanyaan yang terhasil mendapatkan semula baris yang diingini, mempamerkan kuasa pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Hanya Baris Pertama dalam JOIN KIRI untuk Suapan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!