sql - 解决一种checked(选中)问题

解决所有管理员中,哪些管理员是绑定角色A的


解决方案(子查询+左连接+ISNULL()函数):

第一步:子查询使admin和role做inner join,选出的admin'必然是绑定了角色的
第二步:外部查询使用所有的admin和之前选出的admin'做left join,admin中没有连接上admin'的,必然是没有绑定role的admin
第三步:没有连接上的temp.id为NULL,使用ISNULL()函数,转换成标志字段

ISNULL(column)为NULL是1 ,不为NULL是0

具体例子

select
            admin.*, !ISNULL(temp.id) as roleChecked
        from
            mgt_administrator as admin
        left join (

            select
                a.id as id
            from
                mgt_role as r
            inner join
                mgt_role_admin_ref as raf on raf.role_id = r.id
            inner join
                mgt_administrator as a on a.id = raf.admin_id
            where
                r.id = #{roleId}
            )  temp on admin.id = temp.id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值