美文网首页
Sql中left join、right join和inner j

Sql中left join、right join和inner j

作者: 秦舒话 | 来源:发表于2018-09-06 13:23 被阅读0次
    • left join(左连接)返回左表中的所有记录和右表中连接字段相等的记录
    • right join(右连接)返回右表中的所有记录和左表中连接字段相等的记录
    • inner join(等值连接)返回两个表中联结字段相等的记录

    现有两张表:

    mysql > select * from left_table
    +---id---+---name---+----code----+
    |   1    |   零食   |  10344875  |
    |   2    |   糕点   |  20983781  |
    |   3    |   餐饮   |  39981029  |
    |   4    |   娱乐   |  78654654  |
    +--------+----------+------------+
    
    mysql > select * from right_table
    +---id---+---name---+----code----+
    |   1    |   坚果   |  59364875  |
    |   2    |   蛋糕   |  87652372  |
    |   4    |   网咖   |  87667233  |
    |   5    |   攀岩   |  45326756  |
    +--------+----------+------------+
    

    left join

    mysql > select * from left_table lt
    left join right_table rt on lt.id = rt.id
    +---id---+---name---+----code----+---id---+---name---+----code----+
    |   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
    |   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
    |   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
    |   3    |   餐饮   |  39981029  |  null  |   null   |  null      |
    +--------+----------+------------+--------+----------+------------+
    

    查询结果记录说明:
    left join是以左表(left_table)的记录为基础的。
    左表的记录将会全部查询出来,而右表(right_table)只会显示符合搜索条件的记录,右表记录不足的地方均为null。

    right join

    mysql > select * from left_table lt
    right join right_table rt on lt.id = rt.id
    +---id---+---name---+----code----+---id---+---name---+----code----+
    |   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
    |   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
    |   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
    |  null  |   null   |  null      |   5    |   攀岩   |  45326756  |
    +--------+----------+------------+--------+----------+------------+
    

    查询结果记录说明:
    right join是以右表(right_table)的记录为基础的。
    右表的记录将会全部查询出来,而左表(left_table)只会显示符合搜索条件的记录,左表记录不足的地方均为null。

    inner join

    mysql > select * from left_table lt
    inner join right_table rt on lt.id = rt.id
    +---id---+---name---+----code----+---id---+---name---+----code----+
    |   1    |   零食   |  10344875  |   1    |   坚果   |  59364875  |
    |   2    |   糕点   |  20983781  |   2    |   蛋糕   |  87652372  |
    |   4    |   娱乐   |  78654654  |   4    |   网咖   |  87667233  |
    +--------+----------+------------+--------+----------+------------+
    

    查询结果记录说明:
    inner join并不以哪张表的记录为基础的;它只查询符合条件的记录

    相关文章

      网友评论

          本文标题:Sql中left join、right join和inner j

          本文链接:https://www.haomeiwen.com/subject/pkyfwftx.html