一、内联结(INNER JOIN)

  MySQL内联结使用INNER JOIN将多个数据表t1,t2隔开,结果是t1里的每一个数据行将与t2里的每一个数据行组合。

  

  逗号连接符、CROSS JOIN和JOIN联结类型类似于INNER JOIN。

  

  

  

  INNER JOIN、CROSS JOIN和JOIN(注意,不包括逗号操作符) 还支持另外几种用来表明如何对数据表里的数据列进行匹配的语法变体:

  1、用一条ON子句代替WHERE子句。

  

  2、使用USING()子句,类似于ON,但要求被联结的数据列必须是同名的。

二、左联结和右联结(外联结)

  内联结只显示在两个数据表里都能找到匹配的数据行。

  外联结除了显示同样的匹配结果,还可以把其中一个数据表在另一个数据表里没有匹配的数据行也显示出来。

  外联结分左联结和右联结两种。

  左联结意思是把左数据表在右数据表里没有匹配的数据行也显示出来。

  右联结意思是把右数据表在左数据表里没有匹配的数据行也显示出来。

  

  左联结工作原理:

  前提:必须给出用来匹配两个数据表里的数据行的数据列(这里t1.i1 = t2.i2)。

  如果左数据表的某个数据行与来自右数据表的某个数据行匹配时,那么这两个数据行的内容就会被选取为一个输出数据行。如果来自

  左数据表的某个数据行在右数据表里找不到匹配,它就会被选取作为一个输出数据行,此时与它联结的是一个来自右数据表里的"假"数据行,这个“假”

  数据行的所有数据列都包含NULL值。

  换一句话说,在LEFT JOIN操作里,来自左数据表的每一个数据行在结果集里都有一个对应的数据行,不管它在右数据表里有没有匹配。

  在结果集里,在右数据表里没有匹配的结果数据行有这样的特征:来自右数据表的所有数据列都是NULL值。

  这个特征可以让你知道右数据表里缺少了哪些数据行。

  

  左联结LEFT JOIN很有用,尤其是在你只想找出在右数据表里没有匹配的左数据表的行时,增加一条WHERE语句,让它把右数据表的数据列全部是NULL值(也就是那些在一个数据表里有匹配,但在另一个数据表里没有匹配)的数据行筛选出来。

  

  一般来说,你把右数据表里值为NULL的数据列显示出来没有什么意义,可以在SELECT语句里输出列清单里剔除:

  

  

MySQL内外联结的更多相关文章

  1. MySQL的联结(Join)语法

    MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别:   在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如 ...

  2. mysql 内外链接

    外联结:分为外左联结和外右联结. 左联结A.B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录 ...

  3. MySQL -- 表联结

    创建联结:(使用WHERE联结)SELECTvend_name,prod_name,prod_priceFROMvendors,productsWHEREvendors.vend_id=product ...

  4. MySql中的内外联结查询

    内联接只显示在两个数据表里都能找到匹配的数据行.外联接除了显示同样的匹配结果,还可以把其中一个数据表在另一个数据表里没有匹配的数据行也显示出来.外联接分左联接和右联接两种. 看下面的例子: 内联接: ...

  5. MySQL JOIN | 联结

    联结是利用SQL的SELECT能执行的最重要的操作.为了提高存储的有效性和避免数据冗余,往往会将有关联的数据存储在好几张表中,那么怎样用一条SELECT语句就能检索出这些数据呢? 答案是JOIN(联结 ...

  6. mysql 左联结与右联结

    mysql> select * from test; +----+------------+-------+-----------+ | id | name | score | subject ...

  7. mysql 表联结,内部联结

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

  8. mysql 创建联结

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

  9. MySQL 外部联结 内连接、左右外连接辨析

    内连接 在进行跨表内连接查询数据时,查询结果只返回符合查询条件的数据:跨表内连接查询的结果和使用where的多表查询结果相同,其实就是普通的查询,没啥好说的 -- 语法: SELECT 别名1.字段名 ...

随机推荐

  1. Android中R.java丢失不见的解决方案

    最近在做android项目时,遇到报错情况,于是clean了一下,结果java类全都报错了,里面的R下有红线,我一找,发现R.java不见了,真是奇怪,如下图(这是解决以后的): 然后查看了一下Con ...

  2. class JsonItemExporter(BaseItemExporter):

    class JsonItemExporter(BaseItemExporter):这个类的实现和几年前的实现有了点小变化,主要就是是否添加换行

  3. Mantis优化改造(功能篇)

    共分为两篇,功能篇和技术篇. 时间大约是2016年冬天. 考虑搭一个用于Bug管理和追踪的系统. 综合比较下,选择了小巧的开源工具,Mantis. 在源码基础上,做代码修改,完成了定制版的优化改造. ...

  4. 洛谷1736(二维dp+预处理)

    洛谷1387的进阶版,但很像. 1387要求是“全为1的正方形”,取dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1]))吧?这个有“只有对 ...

  5. 165 Compare Version Numbers 比较版本号

    比较两个版本号 version1 和 version2.如果 version1 大于 version2 返回 1,如果 version1 小于 version2 返回 -1, 除此以外 返回 0.您可 ...

  6. ES--在windows上快速安装

    环境准备 java环境部署: Java下载路径:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a ...

  7. jmeter配置mysql数据库步骤

    安装环境: Windows10系统 jmeter版本:3.0版本 java1.8版本 安装步骤: 1.下载连接mysql数据库jar包,地址:http://download.csdn.net/deta ...

  8. 26款优秀的Android逆向工程工具

    26款优秀的Android逆向工程工具

  9. sqlserver2012 offset

    /* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public Lic ...

  10. echarts简单用法快速上手

    1.html结构 简单说就是一个标签一个图表:2.初始化:var myEcharts = echarts.init(document.getElementById("xxx")): ...