Mendapatkan Baris Pertama dari LEFT JOIN
Dalam SQL, melakukan LEFT JOIN biasanya menghasilkan berbilang baris untuk jadual kiri, satu untuk setiap baris yang sepadan dalam jadual kanan. Walau bagaimanapun, dalam senario tertentu, anda mungkin perlu mendapatkan hanya baris pertama untuk jadual kiri.
Struktur Pangkalan Data Ringkas
Pertimbangkan struktur pangkalan data yang dipermudahkan berikut:
Suapan
id | title | content ---------------------- 1 | Feed 1 | ...
Artis
artist_id | artist_name ----------------------- 1 | Artist 1 2 | Artist 2
feeds_artists
rel_id | artist_id | feed_id ---------------------------- 1 | 1 | 1 2 | 2 | 1 ...
Percubaan Awal dan Hadnya
Untuk mengekstrak artikel dan sertakan sahaja artis pertama untuk setiap suapan, LEFT JOIN biasanya digunakan. Pertanyaan berikut mewakili percubaan awal:SELECT * FROM feeds LEFT JOIN feeds_artists ON wp_feeds.id = ( SELECT feeds_artists.feed_id FROM feeds_artists WHERE feeds_artists.feed_id = feeds.id LIMIT 1 ) WHERE feeds.id = '13815'
Penyelesaian
Untuk berjaya mengeluarkan hanya artis pertama untuk setiap suapan, pertanyaan berikut boleh digunakan: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 )
Penyelesaian Alternatif untuk Menambah ID
Jika andaian boleh dibuat bahawa ID artis meningkat dari semasa ke semasa , penyelesaian alternatif dibentangkan:SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT MIN(fa.artist_id) a_id FROM feeds_artists fa WHERE fa.feed_id = f.feed_id )
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan hanya baris pertama dari LEFT JOIN untuk setiap entri jadual kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!