项目场景:
需要查询同时拥有某产品的用户信息
需求:
某业务需要提供根据产品查询拥有产品的用户信息(产品可能为多个)
解决方案:
- group by + having
SELECT su.user_code, u.user_name,su.role_code,r.role_name data_code FROM sys_user_data_auth su
JOIN sys_user u ON su.user_code = u.user_code AND u.delete_flag = 0
JOIN sys_role r ON su.role_code = r.role_code AND r.delete_flag = 0
WHERE su.delete_flag = 0
AND su.data_code IN
<foreach collection="dataCodeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND su.role_code = #{roleCode}
GROUP BY su.user_code,su.role_code
HAVING count(*) = ${dataCodeList.size()}
注:使用#{}获取数字进行比较时会报错,故使用${}引用
2. EXISTS