首页 >数据库 >mysql教程 >如何使用 JOIN with LIMIT 1 检索每个类别的一个产品?

如何使用 JOIN with LIMIT 1 检索每个类别的一个产品?

Susan Sarandon
Susan Sarandon原创
2024-12-01 06:38:13301浏览

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