Menyertai Jadual dengan LIMIT 1 pada Jadual Bercantum
Tugasnya adalah untuk menyertai dua jadual tetapi mengambil hanya satu rekod daripada jadual bercantum setiap rekod dalam jadual pertama. Pertimbangkan jadual berikut:
categories (id, title) products (id, category_id, title)
Pertanyaan mudah akan menyertai jadual ini seperti berikut:
SELECT c.id, c.title, p.id AS product_id, p.title FROM categories AS c JOIN products AS p ON c.id = p.category_id
Walau bagaimanapun, ini mengembalikan berbilang baris untuk setiap kategori, yang tidak diingini. Kami perlu mengehadkan keputusan kepada satu rekod daripada jadual produk bagi setiap kategori.
Satu pendekatan yang disyorkan dalam soalan yang sama ialah menggunakan subkueri untuk mendapatkan kunci utama rekod yang dikehendaki:
SELECT c.id, c.title, p.id AS product_id, p.title AS product_title FROM categories AS c JOIN products AS p ON p.id = ( SELECT p1.id FROM products AS p1 WHERE c.id=p1.category_id ORDER BY p1.id LIMIT 1 )
Pertanyaan ini dengan cekap mendapatkan semula hasil yang diingini tanpa menghadapi masalah pertanyaan bersarang. Selain itu, ia mengatasi prestasi penyelesaian lain yang dicadangkan dari segi masa pelaksanaan, terutamanya apabila berurusan dengan set data yang besar.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Satu Produk bagi setiap Kategori Menggunakan JOIN dengan LIMIT 1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!