PostgreSQL查詢數據(連接查詢和子查詢)


原料

--用戶表
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);
View Code

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"

數據輸出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM