小贝_mysql select连接查询
来源:互联网 发布:linux运维岗笔试题 编辑:程序博客网 时间:2024/05/22 17:54
select连接查询
简要:
一、union联合查询
二、左右内连接
一、union联合查询
作用: 把2次或多次查询结果合并起来
详细: (表1查询结果) union (表2查询结果)
执行: 先算表1查询结果,再算表2查询结果。再通过union把结果联合起来。
总结:
a、左右查询结果列数一致
b、最终显示结果以第一张表的列名为主
c、左右查询结果的列类型最好也一致,不然就会进行转换。由低到高。如表1结果A列为整形,表2结果A列为浮点型。则表1在A列的结果转换为浮点型
d、可以是不同表
e、如果不同的语句中取出的行,有完全相同(每个列的值都相同),那么相同的行将会合并(去重)
案例:
查询 这样的结果:
a16,b 21,c 14,d 41
步骤1: union来获取两张表的查询结果
步骤2: 把步骤1的查询结果看成临时表
不足之处: 上述案例中表ta和tb中不存在完全相同的列(即查询结果中所有列的值都一样)
修改下tb表
此时,执行步骤2的sql语句
发现id为a的值总和为5而不是为10.
这是因为如果不同的语句中取出的行,有完全相同(每个列的值都相同),那么相同的行将会合并(去重)
处理方案: 用union all
二、连接查询
通常情况下表与表之间是没有什么关系的。但是我们可以通过一个字段,让表与表发生关系。
把表看成集合。
2.1、左连接
语法: select 列1,列2,列N from tableA left join tableB on tableA.列=tableB.列
2.2、右连接
语法: select 列1,列2,列N from tableA right join tableB on tableA.列=tableB.列
2.3、内连接
语法: select 列1,列2,列N from tableA inner join tableB on tableA.列=tableB.列
2.4、左右内连接的区别
create table boy
( name char(3) not null,
flower char(5)
)engine=myisam charset utf8;
create table girl
( name char(3),
flower char(5)
)engine=myisam charset utf8;
insert into boy values('林书豪','玫瑰'),('刘翔','桃花'),('周杰伦','茉莉花'),('犀利哥','荷花'),
('刘德华','狗尾巴花');
insert into girl values('艾薇尔','玫瑰'),('居里夫人','桃花'),('芙蓉姐','茉莉花'),('凤姐','茉莉花'),('林志玲','荷花');
案例一: 根据花,男找女
左连接
以左表为准,去右表找匹配数据,找不到匹配,用NULL补齐。
总结: tableA为N ;tableB为M。则在以tableA为左表的情况下,得到的数据行数至少为N行。
案例二: 根据花,女找男
总结:左连接和右连接相互转换。
A在 B的左边 ==》B在A的右边
A left join B ==》B rightjoin A
如何记忆:
1、 左右连接可以相互转化
2、 可以把右连接转换为左连接来使用(兼容其它数据版本)
案例三: 无论男女,查找有伴的人
总结: 内连接inner join 查询左右连接都有的数据。即得到左右连接的交集
思考: 能否查出左右连接的并集呢?
答: 目前不能直接获取,目前的mysql不支持外链接。
但可以用union联合
The quieter you become,the more you are able to hear!
- 小贝_mysql select连接查询
- 小贝_mysql三种子查询
- 小贝_mysql学习准备
- 小贝_mysql 存储过程
- 小贝_mysql 触发器使用
- 小贝_mysql优化学习
- 小贝_mysql表优化
- 小贝_mysql分区理论学习
- 小贝_mysql分区实例
- 小贝_mysql select5种子句介绍
- 小贝_mysql view视图学习
- 小贝_mysql 常见存储引擎区别
- 小贝_mysql sql语句优化过程
- 小贝_mysql索引学习与优化
- 小贝_mysql数据库备份与恢复
- 02_mysql连接阶段
- 小贝_mysql建表以及列属性
- 小贝_mysql 存储引擎及事务概念
- 苹果开发 笔记(42)leftBarButtonItem
- Codeforces 555B Case of Fugitive 排序+贪心
- php+MySQL基于百度BAE的微信公众平台获取access_token
- HDU---1010-Tempter of the Bone
- GCC系列: Homebrew安装GCC和binutils
- 小贝_mysql select连接查询
- 关于Android中的service的简单描述
- 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
- 基于ZooKeeper的分布式Session实现
- 理解hashcode
- JavaScript为什么会有 undefined值。
- 疯狂Android讲义(1b)-基于监听&回调的事件处理-小结
- appweb初探
- Hadoop2.0安装部署