在連接表上連接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中文網其他相關文章!