【发布时间】:2011-09-13 18:57:28
【问题描述】:
我正在尝试从关联表中选择满足同一字段的两个或多个值的项目,听起来很混乱,让我解释一下。
+-----------------------+
| item_id | category_id |
+-----------------------+
| 1 | 200 |
| 1 | 201 |
| 1 | 202 |
| 2 | 201 |
| 2 | 202 |
| 3 | 202 |
| 3 | 203 |
| 4 | 201 |
| 4 | 207 |
+-----------------------+
在表格中,我希望能够仅选择我通过的类别中的项目。因此,例如,如果我传递 201 和 202 的类别 ID,我只想要两个类别中的项目(它们可以有其他类别,但至少需要在我查询的类别中),所以在这种情况下,我只想要项目 1 和 2,因为它们是唯一属于 201 和 202 类别的项目。
我最初的 SQL 语句是这样的
SELECT * FROM item_category WHERE category_id = 201 AND category_id = 202;
但显然这行不通。
SELECT * FROM item_category WHERE category_id = 201 OR category_id = 202;
上述查询也不起作用,因为它也会返回项目 4 和 3。
那么我将如何只选择必须至少同时属于这两个类别的项目?
请记住,我可能会传递超过 2 个类别 ID。
感谢您的帮助。
【问题讨论】: