我有以下的mysql表:
map_id - module_id - category_id
1 - 3 - 6
2 - 3 - 9
3 - 3 - 11
4 - 4 - 6
5 - 4 - 9
6 - 4 - 12
map_id
是主键。我有一个category_id
数组的列表。
我的选择条件是:
- 如果
category_id
数组包含6,9,则应返回module_id=3,4
。 - 如果
category_id
数组包含6,9,11,则仅应返回module_id=3
。
现在,如果运行简单的WHERE...IN
查询,则会选择所有行,这不是我想要的。
编辑:实际上,我正在寻找更动态的解决方案。也许我的问题没有表达清楚(这是我的第一个问题)。
假设我有以下category_id
:
$cat = array(6,9)
如果查询
"SELECT module_id FROM maptable WHERE category_id IN (".implode(',', $cat).")"
然后就会得到module_id=3,4
的行。
另一方面,如果数组为
$cat = array(6,9,11)
并且我运行相同的查询,则再次获得相同的结果。但这次我只想要module_id=3
的行。
category_id, module_id
是唯一的,则不需要使用 group by。 - Ariel