SQL连接、合并、子查询
连接:连接分为内连接、外连接、交叉连接
内连接和外连接都是在笛卡尔积的基础做一些修改。

合并查询:把两个相似的结果可以用union联合起来。
mysql> select id,time from exam
-> union
-> select id,time from recuit;
+-----+------------+
| id | time |
+-----+------------+
| 1 | 2016-08-30 |
| 2 | 2016-09-10 |
| 8 | NULL |
| 9 | 2016-08-31 |
| 100 | 2014-08-06 |
| 1 | 2016-08-31 |
| 2 | 2016-08-25 |
| 3 | 2016-08-31 |
+-----+------------+
8 rows in set (0.14 sec)
子查询:
当子查询为单行单列时:可以用子查询的某条记录作为where condition的元素之一。
mysql> select id from recuit
-> where id>
-> (select id from exam where name="tengxun");
+----+
| id |
+----+
| 2 |
| 3 |
| 9 |
+----+
3 rows in set (0.12 sec) mysql> (select id from exam where name="tengxun");
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
子查询的返回值为多行多列时:
mysql> select * from recuit
-> where (id,time)
-> >
-> (select id,time from exam where id=1);
+----+------------+-----------------+---------+--------+
| id | time | process | name | result |
+----+------------+-----------------+---------+--------+
| 1 | 2016-08-31 | wait for result | baidu | 1 |
| 2 | 2016-08-25 | haha | tengxun | 1 |
| 3 | 2016-08-31 | jiayou | wangyi | 1 |
| 9 | 2016-08-31 | happy | wangyi | 1 |
+----+------------+-----------------+---------+--------+
4 rows in set (0.02 sec)
带有关键字In的查询,当主查询的条件是子查询的查询结果中时,就可以通过关键字in来判断。相反如果不是可以用not in。
select * from table_name
where field_name in
(select field_name from table_name);
带有关键字ANY的查询:
=ANY:功能与in一样。
>ANY: 返回比子查询中最小的还要大的记录。只要大于子查询中其中一个就行了。
<ANY:返回比子查询中最大的还要小的记录。只要小于一个就行了。
带有关键字ALL的查询:
>ALL:比最大的还要大。
<ALL:比最小的还要小。
带有关键字exists:
exist的子查询实际上不返回任何记录,而是返回true和false,如果子查询存在至少一条记录,就会返回true。否则就是false.
问题1: --users表有1000条记录,id自增,id都大于0 select * from users where exists (select * from users limit 0); --输出多少条记录? select * from users where exists (select * from users where id < 0); --输出多少条记录? 答案(请选中查看): 10000条 0条 原因: exists查询的本质,只要碰到有记录,则返回true;所以limit根本就不会去管,或者说执行不到。 问题2: exists可以完全代替in吗? 不能。 例如: --没有关联字段的情况:枚举常量 select * from areas where id in (4, 5, 6); --没有关联字段的情况:这样exists对子查询,要么全true,要么全false select * from areas where id in (select city_id from deals where deals.name = 'xxx');
SQL连接、合并、子查询的更多相关文章
- ylb:SQL 表的高级查询-多表连接和子查询
ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- 读《程序员的SQL金典》[3]--表连接、子查询
一.表连接-JOIN 1. 自连接实例 查询类型相同的订单信息. SELECT O1 .*,O2.* FROM T_Order O1 JOIN T_Order O2 ON O1 .FTypeId= O ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- SQL Server 数据库子查询基本语法
一.SQL子查询语句 1.单行子查询 select ename,deptno,sal from emp where deptno=(select deptno ...
- MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- HIVE:用外连接替代子查询
由于hive也支持sql,很多人会把hql跟标准sql进行比较,甚至有的时候会直接套用.hive不支持事务也不支持索引,更不支持追加写,但是对于一般的sql都是能够支持的.但是对于一些子查询确实无法支 ...
- MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- MySQL开发——【联合查询、多表连接、子查询】
联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...
- mysql学习笔记-- 多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
随机推荐
- centos 7 yum方式安装MySQL 5.6
本文根据mysql的官方文档操作:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 由于Centos7 默认数据库是mariabd(网上 ...
- Tomcat学习笔记(一)一个简单的Web服务器
内容为<深入剖析Tomcat>第一章重点,以及自己的总结,如有描述不清的,可查看原书. 一.HTTP协议: 1.定义:用于服务器与客户端的通讯的协议,允许web服务器和浏览器通过互联网进行 ...
- 简单谈谈js中的MVC
MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): ...
- Memcached的基础梳理
1 .Memcached 概念 官方解释如下: What is Memcached? Free & open source, high-performance, distributed mem ...
- github、gitlab 管理多个ssh key
第一种方法: 通过 git 命令行来操作 1.cd ~/.ssh 2.ls 注:如果.ssh 目录下有文件存在那么表示之前添加过 3. ssh-keygen -t rsa -C "xxxxx ...
- year:2017 month:08 day:04
2017-08-04 JAVAse 1.final修饰符 final可以修饰类,成员方法,成员变量(static 修饰符不可以修饰类) final的初始化在对象被实例化前即可final 修饰的方法不可 ...
- Maven导出Project依赖的jar包
Maven导出Project依赖的jar包 从Maven仓库中导出jar包: mvn dependency:copy-dependencies 会导出到Project的targed/dependenc ...
- 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。
namespace test2 { class Program { /// <summary> /// 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的 ...
- HPU--1280 Divisible
题目描述 给定一个很大的整数,我想知道它能否被9整除. 输入 有t组测试数据,每组数据给定一个整数N不存在前导0.(1 <= t <= 20,1 <= N <= 10^200) ...
- HTML+CSS+JS简介
1.HTML与 CSS 1 1.1 HTML 1 1.2 HTML5 2 1.2.1 HTML5的特性 3 1.3 CSS 4 2.JavaScript 6 2.1特性 7 2.2编程 8 3.Sp ...