软件 聊天 安全 视频 浏览器 下载 系统 办公 教学 输入法
免费 域名 空间 相册 邮箱 资源 网赚 试用 优惠 工具
教程 设计 三维 学院 办公 网页
素材 PSD 矢量 网页 PPT 动画
美女 唯美 大生活 美图 风景 时尚艺
资讯 新闻 专题 热点
您的位置: 广信之家 > 网络学院 > 建站资讯 > 文章正文

详细讲解MySql语句inner join,left join,right join的用法并分析

时间:10-27 02:20 来源:广信之家 整理:广信小编 我要评论(0)
字号:T|T
内容提要:
  广信之家在这里来帮大家了解MySql语句inner join,left join,right join的用法并详细讲解,1.left join(左联接) 2.right join(右联接) 3.inner join(相等联接或内联接),下面是例子分析这三个的用法。

广信之家在这里来帮大家了解MySql语句inner join,left join,right 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
+--------------+

创建这两个表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

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。

如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

通过以上的详细讲解与分析实例,希望广信之家真的帮助到大家了解MySql语句inner join,left join,right join的具体用法。

    相关阅读:

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    免责申明:以上内容仅代表原创者观点,其内容未经本站证实,详细讲解MySql语句inner join,left join,right join的用法并分析对以上内容的真实性、完整性不作任何保证或承诺,转载目的在于传递更多信息,由此产生的后果与详细讲解MySql语句inner join,left join,right join的用法并分析无关;如以上转载内容不慎侵犯了您的权益,请联系我们将会及时处理。
    [责任编辑:广信小编]

    精彩图文

    登录 (请登录发言,并遵守 相关规定)
    如果你对广信之家有任何意见或建议,请到交流平台反馈。到留言板反馈