子查询

子查询(嵌套查询),是嵌套在外层查询where子句中的查询

子查询为主查询返回其所需要的数据,或者对外查询的结果作进一步的限制

in子查询,在内层查询中返回某列的值,外层使用同样的列和子查询的返回值比较。
使用关键词in时,返回值可以有多个(使用关系运算符时,返回值只能是一个)。

exists用来检查子查询是否有查询结果返回,
返回的exists为ture 则外查询语句进行查询,
返回的exists为false ,外查询则不查询。exists返回的是一个布尔值
in语法:

select table1.col_name_n(多个字段) from table1 where col_name1 in [或not in] (select col_name1 from table2 where condition);

exists语法:

select table1.col_name_n from table1 where exists (select col_name1 from table2 where condition);

表e中记录了女性的个人信息,表t中记录了对应的附加信息,目的是:查询女性的所有附加信息
实例使用in :

select table_t.* from table_t where r1 in (select r1 from table_e where r2=“女”);
选择表t的所有字段为显示结果,主查询条件为:表t中的r1字段在(子查询条件为:表e中 r2=女的值的数据))

实例使用exists:

select table_t.* from table_t where exists (select r1 from table_e where r2=“女”);
从表t中显示表t的所有字段数据,exists为ture则显示,并在后面的数据中筛选,false则不显示,真假判断条件为(子查询,有数据则为ture,没有则为false)

主查询决定是否显示数据,不需要在主查询中匹配字段

2实例使用exists:

判断table_e中字段r1==table_t中r1中字段
select * from table_t A where exists (select r1 from table_e where table_e.r1=A.r1);
select * from table_t A where not exists (select r1 from table_e where table_e.r1=A.r1);
实例数据里面是table_t的数据比 table_e中的多
选择显示“妖艳”的女的信息:可以使用in和exists
select table_e.* from table_e where
r1 in
(select r1 from table_t where r2=“妖艳”);
select table_e.* from table_e where
exists
(select r1 from table_t where r2="妖艳"
and table_e.r1=table_t.r1 );

not exists
实例数据:
create table table_e(
r1 varchar(10),
r2 varchar(10),
r3 int,
r4 varchar(10)
);
insert into table_e values
(“a1”,“女”,1,“岁”),
(“a2”,“女”,2,“岁”),
(“a3”,“女”,8,“岁”),
(“a4”,“男”,4,“岁”),
(“a5”,“男”,5,“岁”),
(“a6”,“男”,6,“岁”),
(“a7”,“男”,7,“岁”);

create table table_t(
r1 varchar(10),
r2 varchar(10)
);

insert into table_t values
(“a1”,“丰满”),
(“a2”,“好身材”),
(“a3”,“妖艳”),
(“a4”,“有钱”),
(“a5”,“财大”),
(“a6”,“富有”);

注意: (a7不插入)

(第十章)多表查询之in,exitst相关推荐

  1. MySQL查询进阶之多表查询

    一.多表查询 1.引出 2.笛卡尔积 3. 笛卡尔积的解决方法 二.多表查询分类 1.等值连接和非等值连接 2.自连接和非自连接 3.内连接和外连接 SQL92:使用(+)创建连接 SQL99语法实现 ...

  2. Spring Hibernate JPA 联表查询 复杂查询

    (转自:http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html) 今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的 ...

  3. (转)MySQL联表查询

    资料源于网络 一.内联结.外联结.左联结.右联结的含义及区别 在SQL标准中规划的(Join)联结大致分为下面四种: 1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结. ...

  4. case when 子查询_Oracle数据库-单表查询

    本章涉及单张表中的查询语句,包含常用的条件查询.范围查询.模糊查询等,跨表查询后续将会介绍. 1.基本查询语句 格式:SELECT[DISTINCT] column_name,-|* FROM tab ...

  5. 顺序表应用6:有序顺序表查询

    顺序表应用6:有序顺序表查询 Time Limit: 7MS Memory Limit: 700KB Submit Statistic Problem Description 顺序表内按照由小到大的次 ...

  6. Mybatis入门:4(多表查询操作)

    多表查询操作 Mybatis的多表操作 表之间的关系有几种:一对多.一对一.多对一.多对多 举例: 用户和订单就是一对多--一个用户可以下多个订单 订单和用户就是多对一--多个订单属于同一个用户 人和 ...

  7. 使用mysql内连接查询年龄_Mysql的连表查询

    若一个查询同时涉及到两个以上的表,称为连表查询 准备表 create table department( id int auto_increment PRIMARY KEY, name varchar ...

  8. 让人又爱又恨的Mysql多表查询

    在SQL开发当中,多表联查是绝对绕不开的一种技能.同样的查询结果不同的写法其运行效率也是千差万别.在实际开发当中,我见过(好像还写过~)不少又长又臭的查询SQL,数据量一上来查个十几分钟那是家常便饭. ...

  9. 3.4.1 单表查询

    3.4.1 单表查询 一.选择表中 若干列 1 查询 全体学生的  学号  和 姓名 select   sno,  sname from student 3 查询全体学生的   详细记录 select ...

最新文章

  1. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
  2. /dev/rdsk 与 /dev/dsk区别
  3. 前后端分离接口规范~
  4. python3.7.4-Centos7升级Python3.7.4
  5. redis服务器端和客户端启动
  6. Android开发:1-1、UI编程基础----基本介绍
  7. js 内置对象的方法
  8. 企业私有云应用之使用OZ制作openstack镜像
  9. O_NONBLOCK与O_NDELAY有何不同?
  10. css权威指南 读书笔记
  11. CREO:CREO软件之零件【编辑】之修饰、用户定义特征的简介及其使用方法(图文教程)之详细攻略
  12. Elasticsearch优化原理
  13. 网络安全-解密WinRAR捆绑恶意程序并自动上线MSF的原理
  14. 政务区块链平台设计思路
  15. HTML技巧篇——禁止网页元素被右击、拖动、选中、复制
  16. mysql键值相同_mysql什么是键值重复
  17. matlab里comb用法,comb_comb的意思和用法搭配
  18. Lipschitz条件
  19. Java技术进阶推荐书单
  20. 基于Java毕业设计大学生校园兼职系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. Linux下find命令用法详解
  2. 利用Vert.x构建简单的API 服务、分布式服务
  3. traefik 结合 docker-compose 的快速安装及使用
  4. jquey 批量操作 checkbox
  5. datetimepicker一个不错的日历android特效
  6. 代码规范与读写可维护性
  7. .NET开源OpenID和OAuth解决方案Thinktecture IdentityServer
  8. 解决“在eclipse中配置Tomcat时,出现Cannot create a server using the selected type的错误”的问题...
  9. 氮化镓充电器哪家好_氮化镓充电器又添一员猛将
  10. CF1228C. Primes and Multiplication(数学)