在连接表上连接 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中文网其他相关文章!