项目场景:

需要查询同时拥有某产品的用户信息


需求:

某业务需要提供根据产品查询拥有产品的用户信息(产品可能为多个)

解决方案:

  1. 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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐