Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Satu Produk bagi setiap Kategori Menggunakan JOIN dengan LIMIT 1?

Bagaimana untuk Mendapatkan Satu Produk bagi setiap Kategori Menggunakan JOIN dengan LIMIT 1?

Susan Sarandon
Lepaskan: 2024-12-01 06:38:13
asal
304 orang telah melayarinya

How to Retrieve One Product per Category Using JOIN with LIMIT 1?

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)
Salin selepas log masuk

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
Salin selepas log masuk

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
 )
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan