匹配()中MYSQL中传递的每个变量

匹配()中MYSQL中传递的每个变量,mysql,function,select,join,Mysql,Function,Select,Join,基本上我有以下疑问: SELECT DISTINCT users.ID, users.name FROM users INNER JOIN usersSkills ON users.ID = usersSkills.userID INNER JOIN usersLanguages ON users.ID = usersLanguages.userID WHERE activated = "1" AND type = "GRADUATE" AND usersSkills.skillID

基本上我有以下疑问:

SELECT DISTINCT users.ID, users.name
FROM users 
INNER JOIN usersSkills ON users.ID = usersSkills.userID 
INNER JOIN usersLanguages ON users.ID = usersLanguages.userID 
WHERE activated = "1" 
AND type = "GRADUATE" 
AND usersSkills.skillID IN(2, 21)
AND usersLanguages.languageID IN(2, 22)
我需要将skillID和languageID与in()函数中传递的每个参数相匹配,如果找到任何一个参数,它将提供一个结果

因此,本质上,我只希望在技能表中找到技能ID 2和21,并且语言的想法相同时,才能看到结果…

使用分组依据(这也将消除选择不同语言的需要)获取聚合计数和HAVING子句,以确保返回的不同元素的计数与正在搜索的元素数匹配

SELECT users.ID, users.name
FROM users 
INNER JOIN usersSkills ON users.ID = usersSkills.userID 
INNER JOIN usersLanguages ON users.ID = usersLanguages.userID 
WHERE activated = "1" 
AND type = "GRADUATE" 
AND usersSkills.skillID IN(2, 21)
AND usersLanguages.languageID IN(2, 22)
GROUP BY users.ID, users.name
HAVING COUNT(DISTINCT usersSkills.skillID) = 2
   AND COUNT(DISTINCT usersLanguages.languageID) = 2

谢谢,这非常接近,但我仍然得到以下错误:未知列“usersLanguages.languageID”中的“having”clause@Andr埃菲盖拉检查打字错误我有而且是正确的,您发布的一个缺少一个s,但我已修复该问题,但它仍然无法正常工作。我现在希望它能够正常工作。很抱歉,因为我正在尝试使其动态渲染,其中一个and在错误的位置渲染,导致结果不稳定,感谢您为此花费了太多时间:(@AndréFigueira很高兴能为您提供帮助。请单击答案旁边的复选标记,将此答案标记为已接受。