原料

--用戶表 create table "SysUser"( "UserId" serial, --用戶Id,自增 "UserName" character varying(50), --用戶名 "Pwd" character varying(50), --密碼 "Status" smallint, --狀態 primary key("UserId") --設置UserId主鍵 ) --角色表 create table "SysRole"( "RoleId" serial, --角色Id "RoleName" character varying(50), --角色名稱 primary key("RoleId") ) --用戶角色關系表 create table "SysUserRole"( "UserId" integer,--用戶Id "RoleId" integer,--角色Id primary key("UserId","RoleId") ) --測試數據 insert into "SysUser" ("UserName","Pwd") values ('username1','123456'); insert into "SysUser" ("UserName","Pwd") values ('username2','123456'); insert into "SysUser" ("UserName","Pwd") values ('username3','123456'); insert into "SysUser" ("UserName","Pwd") values ('username4','123456'); insert into "SysRole" ("RoleName") values ('Role1'); insert into "SysRole" ("RoleName") values ('Role2'); insert into "SysUserRole" ("UserId","RoleId") values (1,1); insert into "SysUserRole" ("UserId","RoleId") values (2,2); insert into "SysUserRole" ("UserId","RoleId") values (3,1); insert into "SysUserRole" ("UserId","RoleId") values (3,2);
SysUser
SysRole
SysUserRole
1.查詢某一用戶擁有的所有角色
select * from "SysRole" where "RoleId" in ( select "RoleId" from "SysUserRole" where "UserId"=3 )
數據輸出
2.查詢某一角色下的所有用戶
select * from "SysUser" where "UserId" in( select "UserId" from "SysUserRole" where "RoleId"=1 )
數據輸出
3.查詢所有的用戶角色信息
select u."UserName",r."RoleName" from "SysUserRole" m left join "SysUser" u on m."UserId"=u."UserId" left join "SysRole" r on m."RoleId"=r."RoleId" order by u."UserName"
數據輸出