如何在 MySQL 中跨行选择具有多个特定列值的项目?

DDD
发布: 2024-10-28 18:54:02
原创
116 人浏览过

How to Select Items with Multiple Specific Column Values Across Rows in MySQL?

MySQL 选择具有多个特定列值的不同行上出现的 ID

问题:

根据特定列的多个指定值从关联表中选择项目是一项常见但具有挑战性的任务。例如,给定表:

item_id category_id
1 200
1 201
1 202
2 201
2 202
3 202
3 203
4 201
4 207

目标是仅选择属于两个或所有指定类别的项目;例如,如果提供类别 ID 201 和 202,则仅应返回项目 1 和 2。

解决方案:

1。自连接:

此方法涉及在 item_id 列上将表与自身连接:

<code class="sql">SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id IN (201, 202)</code>
登录后复制

此查询返回一个连接结果集,其中每个唯一的对都包含一行原始表中满足category_id条件的行。

2. Group BY 和 HAVING:

另一种方法是使用 GROUP BY 和 HAVING 子句:

<code class="sql">SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201, 202)
GROUP BY c.item_id
HAVING cat_count = 2</code>
登录后复制

此查询按 item_id 对行进行分组,并计算类别 ID 的出现次数每行 201 和 202。 HAVING 子句过滤掉那些没有指定出现次数(在本例中为 2)的行。

以上是如何在 MySQL 中跨行选择具有多个特定列值的项目?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!