`
mushme
  • 浏览: 776991 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

mysql left join,right join,inner join用法分析[转]

阅读更多
比较详细的mysql的几种连接功能分析,只要你看完就能学会的好东西
下面是例子分析
表A记录如下:
aID   aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115
表B记录如下:
bID   bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408
创建这两个表SQL语句如下:
CREATE TABLE a
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 )
)
CREATE TABLE b(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 )
)
INSERT INTO a
VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ;
INSERT INTO b
VALUES ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3, '2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' ) ;
实验如下:
1.left join(左联接)
sql语句如下:
SELECT * FROM a
LEFT JOIN b
ON a.aID =b.bID
结果如下:
aID      aNum      bID      bName
1     a20050111   1       2006032401
2     a20050112   2       2006032402
3     a20050113   3       2006032403
4     a20050114   4       2006032404
5     a20050115 NULL   NULL
(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部 表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
2.right join(右联接)
sql语句如下:
SELECT * FROM a
RIGHT JOING b
ON a.aID = b.bID
结果如下:
aID         aNum      bID      bName
1        a20050111   1      2006032401
2        a20050112   2      2006032402
3        a20050113   3      2006032403
4        a20050114   4      2006032404
NULL  NULL            8      2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join(相等联接或内联接)
sql语句如下:
SELECT * FROM a
INNER JOIN b
ON a.aID =b.bID
等同于以下SQL句:
SELECT *
FROM a,b
WHERE a.aID = b.bID
结果如下:
aID     aNum        bID       bName
1    a20050111     1      2006032401
2    a20050112     2      2006032402
3    a20050113     3      2006032403
4    a20050114     4      2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
LEFT JOIN操作用于在任何的 FROM 子句中,
组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即
使在第二个(右边)表中并没有相符值的记录。
语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 WHERE condition
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的
名称。
ON语句部分为两表之间的关联条件
compopr 参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在 INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。
分享到:
评论

相关推荐

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    超详细mysql left join,right join,inner join用法分析

    下面是例子分析表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 2006032408 ...

    mysql 开发技巧之JOIN 更新和数据查重/去重

    1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join ...

    语法教学20. 用 inner, left, right, cross join 联集数据表的介绍与示范

    [MySQL][關聯式資料庫][DB]_語法教學#20._用_inner,_left,_right,_cross_join_聯集

    MySQL中join语句的基本使用教程及其字段对性能的影响

    … FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 通常称为左表,table2 称为右表。ON 关键字用于设定匹配条件,用于限定在结果集合中想要哪些行。如果需要指定其他条件,后面可以加上 WHERE 条件...

    浅谈mysql中多表不关联查询的实现方法

    大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join)、右联结(right join)、内联结(inner join)、外联结(outer join)。这种都是两个表之间有一定关联,也就是...

    浅析Mysql Join语法以及性能优化

    代码如下:… FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表;table2:右表。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。 ...

    MySQL中基本的多表连接查询教程

    一、多表连接类型 1. 笛卡尔积(交叉连接) ...一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN  2. 内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELE

    MySQL面试题(记得被问过的一些题目)

    关联查询INNER JOIN、LEFT JOIN 、RIGHT JOIN的区别与适用场景? 索引分类? 索引区别? 什么是MySQL的锁机制? 什么是乐观锁和悲观锁? 乐观锁和悲观锁的区别? 乐观锁和悲观锁的使用场景? 什么是死锁? 解决死锁...

    MySQL数据库:USING子句.pptx

    表名1 LEFT| RIGHT JOIN 表名2 USING (列名) [WHERE 条件表达式] ; 【例】 查找Members表中所有订购过图书的会员的姓名。 SELECT Distinct 姓名 FROM Members JOIN Sell USING (用户号); 与下列语句等价: SELECT ...

    mysql面试题(涉及索引、事务、锁)

    left join,right join,inner join 说说分库与分表设计 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,全局表?) 说说 SQL 优化之道 MySQL遇到的死锁问题、如何排查与解决 索引类别(B+树...

    sql学习笔记

    sql练习中易错笔记,order by ,group by,distinct,内连接,外连接等,一些mysql和oracle使用的区别:sql4种连接 两个表中有相同的列,根据共有的列值匹配行 left join左外连接,不管左表是否在右表中有匹配行,都...

    mysql练习题

    MYSQL子查询、相关子查询、inner join、left|right join、cross join 、行列转换等高级查询练习题

    Mysql联表update数据的示例详解

    1.MySQL UPDATE JOIN语法 在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, ...第二,指定一种要使用的连接,即INNER JOIN或LEFT JOIN和连接条件。J

    开发人员的 MySQL 教程.zip

    还将了解高级数据查询技术,包括INNER JOIN,LEFT JOIN,子查询,UNION等。 参考阅读:http://www.yiibai.com/mysql/basic-mysql.html 第二章 常用技巧 本节将提供一些高级的 MySQL 技术和技巧,以帮助您有效解决 ...

    MySQL 连接的使用

    MySQL 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。 本章节我们将向大家介绍如何...RIGHT JOIN(右连接): 与 LEFT JOIN 相

    MySQL常见面试题(表连接类型,count(*),count(列),count(1)的区别,索引,存储引擎,锁,优化)

    内连接:使用inner join,表示查询出来两个表具有关联的数据,无关联性的数据不会查询出来。也可以直接使用多表查询 左外连接:使用left outer join,表示即使左表存在未关联数据,也被查询出来。在left outer join...

    SQL语句生成及分析器

    内连接(inner join)和外连接(left join/right join/full join) 排序(Order By) 条件(Where) 分组(Group By) 分组条件(Having) 计算字段 SQL查询表 SQL查询子句 丰富的函数 表别名 字段别名 联合(Union...

Global site tag (gtag.js) - Google Analytics