首页  >  文章  >  数据库  >  如何跨行选择具有多个特定列值的 MySQL ID?

如何跨行选择具有多个特定列值的 MySQL ID?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 07:30:27649浏览

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

选择具有特定列值的多行中出现的 MySQL ID

识别满足特定列中两个或多个特定值的项目可以是MySQL 中的挑战。考虑以下表格结构:

+-----------------------+
| item_id | category_id |
+-----------------------+
|   1     |    200      |
|   1     |    201      |
|   1     |    202      |
|   2     |    201      |
|   2     |    202      |
|   3     |    202      |
|   3     |    203      |
|   4     |    201      |
|   4     |    207      |
+-----------------------+

目标是仅选择属于两个指定类别的项目,尽管可能与其他类别相关联。

无效的解决方案:

  • WHERE Category_id = 201 AND Category_id = 202: 不成功,因为它搜索不可能的条件(单行上的两个值)。
  • WHEREcategory_id=201ORcategory_id=202:返回不正确的结果(包括不属于两个类别的项目)。

有效的解决方案:

自连接:

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 = 201 AND c2.category_id = 202

此方法基于公共列 (item_id) 连接同一表中的行,允许在多行及其值之间进行比较。

GROUP BY:

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

利用 GROUP BY 函数,此方法计算每个 item_id 的不同类别值的数量。选择 cat_count 等于指定类别数(本例中为 2)的项目。

结论:

两种方法都可以有效识别满足所需标准的项目。它们之间的选择取决于具体要求和数据库性能考虑。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn