多对多查询一对一SQL

with t as
 (select user_id, role_id from user_role valid_date > sysdate)
select a.*
  from t a,
       (select user_id from t group by user_id having count(*) = 1) b,
       (select role_id from t group by role_id having count(*) = 1) c
 where a.user_id = b.user_id
   and a.role_id = c.role_id


你可能感兴趣的:(with)