首頁 >資料庫 >mysql教程 >如何使用 JOIN with LIMIT 1 檢索每個類別的一個產品?

如何使用 JOIN with LIMIT 1 檢索每個類別的一個產品?

Susan Sarandon
Susan Sarandon原創
2024-12-01 06:38:13359瀏覽

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

在連接表上連接LIMIT 1 的表

任務是連接兩個表,但每個表只從連接表中檢索一筆記錄記錄在第一個表格中。考慮以下表:

categories (id, title)
products (id, category_id, title)

一個簡單的查詢將如下連接這些表:

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

但是,這會為每個類別返回多行,這是不可取的。我們需要將結果限制為每個類別的產品表中的一筆記錄。

在類似問題中建議的一種方法是使用子查詢來檢索所需記錄的主鍵:

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
 )

此查詢可以有效地檢索所需的結果,而不會遇到嵌套查詢問題。此外,它在執行時間方面優於其他建議的解決方案,特別是在處理大型資料集時。

以上是如何使用 JOIN with LIMIT 1 檢索每個類別的一個產品?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn