注意:使用 MySQL 4.0,这意味着没有子查询(目前)。
我有 2 张桌子:
- 一个“user_details”表
- 一个“skills”表,其中包含 user_id 和一个“skill_id”,它映射到在别处定义的预定义技能集。
当前查询允许管理员通过选择技能来搜索用户,并且查询以 OR 方式工作,例如:
LEFT JOIN skills
ON (ud.user_id = skills.user_id)
WHERE skills.skill_id in (51, 52, 53, 54, 55)
GROUP BY ud.user_id
这会返回太多记录,因此我希望此搜索字段以 AND 方式工作,其中用户必须具有所有选定的技能才能在搜索中返回。
如果子查询是最好的选择,那么升级 MySQL 是可能的。
编辑:与分组,计数,拥有等有关。您可以通过命令限制分组,并要求您返回多少匹配的行?(例如本例中的 5)。
编辑2:测试:
HAVING COUNT( * ) > 5