加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql:使用AND样式查询而不是OR联接表查找记录

发布时间:2020-12-11 23:22:34 所属栏目:MySql教程 来源:网络整理
导读:注意:使用MySQL 4.0,这意味着没有子查询(当前). 我有2张桌子: 一个“ user_details”表 “技能”表,其中包含user_id和“ skill_id”,它们映射到在其他位置定义的一组预定义技能. 当前查询允许管理员通过选择技能来搜索用户,并且查询以“或”方式工作,例如

注意:使用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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读