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中的子查询)
子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念. 子查询返回结果子查询可以返回的数据类型一共分为四种: ...
随机推荐
- VS2010开发MFC ActiveX,摄像头拍照上传Webservice(2)
继续记录,第二步开发摄像头拍照功能. 使用vfw.h开发摄像头拍照功能,关于vfw网上有很多文章,很多代码可以参考 参考:http://blog.163.com/huangqiao_8/blog/st ...
- Python实践练习:选择性拷贝
题目 项目要求:编写一个程序,遍历一个目录树,查找特定扩展名的文件(诸如.pdf 或.jpg),不论这些文件的位置在哪里, 将它们拷贝到一个新的文件夹中. 代码 import os import sh ...
- Linux Tomcat 7.0 管理员登录时"401 Unauthorized" 问题解决方法
http://blog.csdn.net/u010359532/article/details/36055291 tomcat 7.0没有默认值,需要在conf的tomcat-users.xml中设置 ...
- Maven(七) maven 常用命令
转载于:http://blog.csdn.net/hynet/article/details/8664747 1. 用Maven 命令创建一个简单的 Maven 项目 在cmd中运行如下命令: mvn ...
- 带入gRPC:gRPC Streaming, Client and Server
带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRP ...
- Redis 授权操作
[Redis 授权操作] AUTH password 通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用密码来保 ...
- SELinux导致的docker启动失败
安装docker yum install -y docker 启动docker systemctl start docker 报错 Job for docker.service failed beca ...
- js小例子之二级联动
联动原理 当用户点击省级的下拉选项,选择所在省,下一个下拉选项里的选项,则变成用户选择省下的所有市的信息,不会出现其它省市的信息. 省市数据 把省市数据,保存在js文件中,以json形式保存,以便读取 ...
- jquery去掉click事件
1:使用removeAttr( )和attr( ) $("a").attr("click",test()); $("a").removeAt ...
- linux shell脚本编程笔记(三): 三种引号的区别
双引号.单引号.反引号的区别 测试用例: OPDATE=`date -d '-1 day' +%Y%m%d` ) do FILEDATE=`date -d "-$i day" +% ...