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','');
insert into "SysUser" ("UserName","Pwd") values ('username2','');
insert into "SysUser" ("UserName","Pwd") values ('username3','');
insert into "SysUser" ("UserName","Pwd") values ('username4','');
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"
数据输出

PostgreSQL查询数据(连接查询和子查询)的更多相关文章
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能
数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...
- DQL---连接查询(内连接、外连接)、子查询、分页查询
一.连接查询 1.连接查询建立在有相互关系的两个表间,进行两个及两个以上的表或视图的查询. 2.对n张表进行查询,至少需要n-1个连接表的条件. 二.笛卡尔积(容易造成数据库宕机) 1.指表中每行元素 ...
- Mysql 多表数据拼接插入及子查询结果集随机取一条
最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数 ...
- MySQL 子查询(四)子查询的优化、将子查询重写为连接
MySQL 5.7 ref ——13.2.10.10优化子查询 十.子查询的优化 开发正在进行中,因此从长远来看,没有什么优化建议是可靠的.以下列表提供了一些您可能想要使用的有趣技巧.See also ...
- mysql 数据操作 多表查询 子查询 带IN关键字的子查询
1 带IN关键字的子查询 #查询平均年龄在25岁以上的部门名关键点部门名 以查询员工表的dep_id的结果 当作另外一条sql语句查询条件使用 in (sql语句) mysql ; +-------- ...
- mysql 数据操作 多表查询 子查询 带比较运算符的子查询
带比较运算符的子查询 #比较运算符:=.!=.>.>=.<.<=.<> #查询大于所有人平均年龄的员工名与年龄 思路 先拿到所有人的平均年龄然后 再用另外一条sql ...
- mysql 数据操作 多表查询 子查询 带EXISTS关键字的子查询
带EXISTS关键字的子查询 EXISTS关字键字表示存在. EXISTS 判断某个sql语句的有没有查到结果 有就返回真 true 否则返回假 False 如果条件成立 返回另外一条sql语句的返 ...
- 反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例
背景 今天在日常数据库检查中,发现一SQL运行时间特别长,于是抓取出来,进行优化. 优化前: 耗时:503s 返回:0 SQL代码 SELECT * FROM MM_PAYABLEMONEY_TD P ...
- 子查询一(WHERE中的子查询)
子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念. 子查询返回结果子查询可以返回的数据类型一共分为四种: ...
随机推荐
- Python开发一个WEB聊天室
项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个群有管理员可以审批用户的加群请求,群管理员可以用多个,群管理员可以删除.添加. ...
- Telnet命令相关+DMZ主机+花生壳
Win7如何解决telnet不是内部或外部命令的方案! telnet用法 测试端口号
- 基于git的管理应用程序基线包和版本
由于工作的需要,身为git的小白的我开始研究git相关的命令和操作.结合网上收集和廖雪峰的git教程,记录所学知识点. 相关的效果就不再这里显示了. 首先我们看一下git的常用命令: 常用命令 git ...
- TCAM CAM 说明 原理 结构 Verilog 硬件实现
TCAM 三态内容地址查找存储器,CAM内容地址查找存储器.区别在于TCAM多了一级掩码功能,也就是说可以指定某几位是dont care.匹配的时候0,1都行的意思. 广泛应用于数据流处理领域,本文简 ...
- Java内存分配及值、引用的传递
关于堆栈的内容网上已经有很多资料了,这是我找的加上自己理解的一篇说明文: 一.内存区域类型 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制: 2. 栈:存放基本类型的变量数 ...
- vs2015 新特性
vs2015 新特性 自动属性的增强 http://www.kwstu.com/ArticleView/manong_201411200854239378
- 深入了解 JPA
转载自:http://www.cnblogs.com/crawl/p/7703679.html 前言:谈起操作数据库,大致可以分为几个阶段:首先是 JDBC 阶段,初学 JDBC 可能会使用原生的 J ...
- Struts2 学习记录-1--Struts2中的配置文件
目录 1. web.xml 2. struts.xml 3. struts.properties文件 4.注解式开发 5.与Spring框架集成的配置 主要涉及3个配置文件:web.xml.strut ...
- What I'm Researching
[What I'm Researching] 1.C++11 2.NLP 3.android dev 4.warm up 5.PageRank
- 因式分解 · Factor Combinations
[抄题]: 给出 n = 8 返回 [[2,2,2],[2,4]] // 8 = 2 x 2 x 2 = 2 x 4 [暴力解法]: 时间分析: 空间分析: [思维问题]: [一句话思路]: 类似于全 ...