解决所有管理员中,哪些管理员是绑定角色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