注意:使用MySQL 4.0,这意味着没有子查询(当前).
我有2张桌子:
>一个“ user_details”表
>“技能”表,其中包含user_id和“ skill_id”,它们映射到在其他位置定义的一组预定义技能.
当前查询允许管理员通过选择技能来搜索用户,并且查询以“或”方式工作,例如:
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).
edit2:测试:
HAVING COUNT( * ) > 5
最佳答案
您不需要子查询或联接.
SELECT user_id
FROM skills
WHERE skill_id IN (51,55)
GROUP BY user_id
HAVING COUNT(*) = 5;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。