sql-多表查询
一:外连接
1.左外连接(left join)


select * from A left join B on A.id=B.a_id 结果如下

很明显,A表的所有数据都显示出来了,而与A表id相同的不同记录就是这次联表的行数
而A表中并没有id为5的记录,所以B表的a_id=5的记录不会显示
反而A表中id为4的记录(B表没有对应),被联表查出来了,因为B表没有对应,所以B表的字段显示为NULL
总结:(left join以两表的id和a_id为准)
①两者都有时,从A表相同的第一条开始算,B表有多少与这条一样的就都加入联表的条数
②只有A表的id有这个值,则联表中插入一条,B表的记录全为NULL的记录
③只有B表的a_id有这个值,则联表不会有这个记录
④左联表中,左边的表一定全都显示,右边的不一定
⑤实际中,我们可以这样操作
select A.id,A.name,B.a_score from A left join B on A.id=B.a_id

2.右外连接(righ join)
这个则反过来,右表是左连接的左表的意思
3.完全外连接(full join)
此时,左右表都会显示在联表中,左表的记录右表没有则显示NULL,右表的记录左表没有也显示NUll
select * from A full join B on A.id=B.a_id
当然,mysql是不支持full join或者full outer join的 我们可以用left right union来完成
SELECT * from A LEFT JOIN B ON A.id=B.a_id
UNION
SELECT * from A RIGHT JOIN B ON A.id=B.a_id

二:内连接
inner join 只会返回条件相同的行
SELECT * FROM A INNER JOIN B on A.id=B.a_id
这个就和 select * from A,B where A.id=B.a_id 一样了

cross join(交叉连接)
select * from A cross join B
结果太长就不显示了,A的行数乘以B的行数就是了
当然加上 on A.id=B.a_id 就变成inner join 的结果了
三:UNOIN
这个操作符可以合并两个或多个 SELECT 语句的结果集。
当然前提这两个语句的列数量相同,类型相同
sql-多表查询的更多相关文章
- sql多表查询之一:Where 和 On的秘密
原文 sql多表查询之一:Where 和 On的秘密 对于还在SQL初级阶段的朋友来说,sql多表查询问题是一个比较有趣也容易出错的技术.什么时候会用到sql多表查询呢?是在两张或两张以上表单中通过某 ...
- oracle SQL多表查询
SQL多表查询 1.集合理论 1.1 什么是集合 具有某种特定性质的事物的总体. 集合的特性:无序性.互异性.确定性. 一个集合可以小到从一个表中取出一行中的一列. 1 ro ...
- SQL联表查询
数据库中最最常用的语法----select.简单的select语法很直白: select column from table where expression: 从((from)存储数据的地方(tab ...
- Sql Server的艺术(四) SQL多表查询
表的基本连接 SQL的一个重要特性就是能通过JOIN关键词,从多个交叉表中查询.分析数据. 连接表的目的 在关系数据库中,数据表设计的一个重要原则就是要避免冗余性. 减少了冗余信息,节省了数据库存储空 ...
- sql多表查询(单表查询略过)
表library: 表borrow: 表reader: 1.等值连接:(常用) 原理:将多张表组合成一个逻辑大表,即字段相加记录相乘(笛卡尔积). 语法:select * from 表A,表B whe ...
- SQL多表查询总结
前言 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要.只有真正了解它们之间的区别,才能正确使用. 一.Union UNION 操作符用于合并两个或多个 SELE ...
- sql 多表查询结果验证
1.笛卡尔积 定义: 设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合 ,叫做A与B的笛卡尔积,记作AxB. 上面有一个很关键的词为“有序”,因此,我们 ...
- 【数据库】sql连表查询
SQL总结 连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两 ...
- Server Sql 多表查询、子查询和分页
一.多表查询:根据特定的连接条件从不同的表中获取所需的数据 多表查询语法: SELECT table1.column, table2.column FROM table1, table2 WHERE ...
- sql 两表查询后 更新某表中部分字段
这是上一个sql更新某表字段的一个延伸,在更新表数据时,实际上会有多表数据查询场景,查询后,只需要更新某一个表中的数据,以下提供两个方法, 第一种使用update 两表查询 update api_ma ...
随机推荐
- bootstrap modal 移除数据
有时业务需求,在弹出模态框时需要动态的展示,但是不做处理时,每次弹出的都是第一次的数据,所以需要监听模态框关闭,每次关闭需要先清除里面的数据. //监听弹页关闭 $("#myModal&qu ...
- LVM快照备份与恢复
简介 最近在做数据备份方面的工作,用到两个工具,一个是dd,而另一个是lvm的快照(snapshot).由于数据比较大,直接是用dd非常耗时,而lvm的快照可以在几秒内轻松搞定,而且可以达到实时的 ...
- 几种流行Webservice框架
一. 几个比较流行的Webservice框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss RESTE ...
- ijkplayer之.so文件编译过程
本文转载:ijkplayer编译so库真没那么难: 1.如何使用ijkplayer 官方:https://github.com/Bilibili/ijkplayer build.gradle添加下述依 ...
- VS2012 C# 连接MySQL数据库
原则:不安装 1.下载: https://dev.mysql.com/downloads/connector/net/6.8.html#downloads 2.解压 → 3.添加引用(一个MySql. ...
- PHP运行出现Notice : Use of undefined constant 的解决办法
这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示.一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉 关闭 PHP 提示的方法 搜索php.i ...
- Scrum Meeting 博客目录
秘制牛肉团队 Scrum Meeting 博客汇总 一.Alpha阶段 团队第一次 # scrum meeting 团队第二次 # scrum meeting 团队第三次 # scrum meetin ...
- VS 代码片段集
片段1:用于线程执行代码,耗时操作时加载Loging; <?xml version="1.0" encoding="utf-8"?> <Cod ...
- git上传文件到coding
一.上传文件到coding:1.远程连接coding,下载远程仓库到本地git clone https://git.coding.net/wanghao_1/besttest_syz.git 2.cd ...
- adobe cc最新版 软件安装与激活
adobe cc最新版 软件安装与激活:https://m.weike.fm/lecture/4912961 说明#:Adobe CC2017的所有软件都可以按照以上方法进行安装,如:Premier ...