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

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

Susan Sarandon
发布: 2024-12-01 06:38:13
原创
402 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板