一、内联结(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. bzoj 4698: Sdoi2008 Sandy的卡片【SAM】

    差分之后用SAM求LCS,然后答案就是LCS+1 #include<iostream> #include<cstdio> #include<cstring> usi ...

  2. poj 1988 Cube Stacking【带权并查集】

    设s[x]为x所在栈里的个数,c[x]表示x下面有几个,合并的时候直接合并s,然后路径压缩的时候更新c即可 #include<iostream> #include<cstdio> ...

  3. 【UVA - 540】Team Queue (map,队列)

    Team Queue Descriptions: Queues and Priority Queues are data structures which are known to most comp ...

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

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

  5. PowerDesigner 16.5的下载安装破解注册(图文详解)

    http://blog.csdn.net/chenchunlin526/article/details/54707757

  6. Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding

    前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...

  7. 跟我一起玩Win32开发(1):关于C++的几个要点

    我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”.不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然, ...

  8. bzoj1878 [SDOI2009]HH的项链【莫队】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1878 以每个询问左端点所属的块的编号为第一关键字,右端点本身为第二关键字,排序,然后保利扫描 ...

  9. canvas基础绘制-倒计时(下)

    digit_1.js: digit = [ [ [0,0,1,1,1,0,0], [0,1,1,0,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0 ...

  10. 【学习笔记】深入理解js原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...