当使用以下查询时,我得到了不正确的结果。使用多个 where in 子句和 HAVING 时如何解决此问题。
SELECT *
FROM `otc_employee_qualifications`
WHERE `emp_qualifctn_type`
IN (
'26', '27'
)
AND `qualification_value`
IN (
'62', '64','65'
)
AND `qualification_mark` >= '10'
GROUP BY `employee_id`
HAVING COUNT( DISTINCT `emp_qualifctn_type` ) = '2'
AND COUNT( DISTINCT `qualification_value` ) = '3'
LIMIT 0 , 30
PHPMYADMIN
在这里,我需要获取同时满足 emp_qualifctn_type(27 和 26)和('62'、'64'、'65')中所有资格值的员工 ID
最佳答案
我发现了查询中的错误。我应该在查询中使用“OR”来组合 HAVING 子句中的多个案例。
SELECT *
FROM `otc_employee_qualifications`
WHERE `emp_qualifctn_type` IN ('26', '27')
AND `qualification_value` IN ('62', '64','65')
AND `qualification_mark` >= '10'
GROUP BY `employee_id`
HAVING COUNT( DISTINCT `emp_qualifctn_type` ) = '2'
OR COUNT( DISTINCT `qualification_value` ) = '3'
这里的结果将为 Null,这是真的。
关于mysql - Mysql中的多个where in子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890649/