SQL多表连接查询以及适用场景分析

    xiaoxiao2026-08-14  9

    三种连接查询

    内连接 (分为显式内连接、隐式内连接)外连接(分为左外连接、右外连接)交叉连接(不常用)

    先看两张表的数据已方便后面演示

    A表

    B表

    交叉连接

    查询两张表的乘积

    select * from A,B;

    内连接

    查询两张表的交集,内链接分为显示和隐式,显示和隐式的结果是一样的。 适用场景:相连接的两个表中必须在某个字段上有相等的值才可以将整条记录显示出来,如一条服务单记录在了两个表中,A表中记录了该服务单的服务时间、坐席名称和录音地址等基本信息,B表中记录了该服务单的业务详情,如保险单号,车牌号,保单日期等,当显示该服务单时,要将A表与B表做内连接,因为少这两表任何一个表,该服务单都不算完整,缺失的信息会使业务上没法继续。

    显式内连接

    select * from A inner join B on a.val=b.id;

    隐式内连接

    select * from A,B where a.val=b.id;

    外连接

    外连接分为左连接和右连接,左连接和右连接很相似,只是左右表位置的不同罢了。 适用场景,如:员工表中有个字段是详细地址信息表的主键id,这两个表相关联时,就可以用左连接或右连接,因为在详细地址信息表中找不到某员工的地址信息也要将员工这条记录显示出来,相应的详细地址信息字段为空即可,而不能因为地址没有存在数据库里,这个员工就没了(简单理解成不重要的信息不影响整条记录的显示)

    左外连接

    查询出左表中所有的列以及右表满足条件的列

    select * from B left outer join A on a.id=b.yf; 或者 select * from B left join A on a.id=b.yf;

    右外连接

    与左外连接相反,查询出右表中所有的列以及左表满足条件的列

    select * from B right outer join A on a.id=b.yf; 或者 select * from B right join A on a.id=b.yf;

    原文:http://www.bxoon.com/archives/sql%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E4%BB%A5%E5%8F%8A%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90

    转载请注明原文地址: https://ju.6miu.com/read-1311180.html
    最新回复(0)