简单SQL多表连接查询示例

一、内连接 ——inner join(inner可以省略)

返回两个表的交集:

1.1隐式内连接(看不到join的内连接)

         就是加了条件的交叉连接:select * from A,B where A.id = B.aid

         比如A的id有{1,2,3},B的aid有{2,3,4},得到的数据:
         id……..A表数据(不含id)……..aid……..B表数据(不含aid)
         2               不为空                  2              不为空  
         3               不为空                  3              不为空

 1.2显式内连接

select * from A inner join B on A.id = B.aid

   得到的数据和隐式内连接一样

select * from A inner join B using (id)

当B表中的外键名等于A表的主键名时使用,查询结果只有一个id字段的值

         比如A的id有{1,2,3},B的id有{2,3,4},得到的数据:
         id……..A表数据(不含id)……..B表数据(不含aid)
         2               不为空                      不为空  
         3               不为空                      不为空

示例

SELECT 表1.字段1,表2.字段2 FROM 表1,表2 WHERE 表1.RowGuid = 表2.RowGuid

二、交叉连接

         返回两个表的笛卡尔积:select * from A,B

         比如A的id有{1,2,3},B的aid有{2,3,4},得到的数据:
         id …..aid…..
         1         2
         1         3
         1         4
         2         2
         ….      ….
         3         3
         3         4

三、外连接

         返回两个表的并集

3.1左外连接left outer join(outer 省略)

select * from A left outer join B on A.id = B.aid

返回A和B的并集,比如A的id有{1,2,3},B的oid有{2,3,4},返回的是{1,2,3},id为1的记录中B表信息为空
         id……..A表数据(不含id)……..aid……..B表数据(不含aid)
         1               不为空                  空                空
         2               不为空                   2              不为空  
         3               不为空                   3              不为空

3.2右外连接right outer join(outer 省略)

select * from A right outer join B on A.id = B.aid   

         返回A和B的并集,比如A的id有{1,2,3},B的oid有{2,3,4},返回的是{2,3,4},id为4的记录中A表信息为空
         id……..A表数据(不含id)……..aid……..B表数据(不含aid)
         2               不为空                   2              不为空  
         3               不为空                   3              不为空
        空                 空                        4              不为空

海拔科技

自媒体人,喜欢网络,热爱研究。本站头条号:星河 熊掌号:海拔科技

相关推荐

CentOS7安装MySQL5.7.x全过程记录

此文章记录了如何在CentOS7安装MySQL5.7.X版本,本文安装方法采用的是yum安装,非编译安装。文章转自镜湖月色的博客,并根据自身项目需求稍作修改。 1. 下载 MySQL yum包  2.安装MySQL源 3.安装MySQL …

解决方法 | ORA-00922选项缺失或无效

创建oracle的时候提示ORA-00922选项缺失或无效,如果忽略接下来会提示 ORA-28000: 账户锁定的错误,这个问题的解决方法很简单: 就是在上面创建数据库有一步是输入密码的,这里的密码不能以数字开头!!! 密码 …

Mysql中insert批量插入数据记录的sql语句

使用一条insert批量插入多条数据记录。 使用方法为: INSERT INTO [表名]([列名],[列名]) VALUES ([列值],[列值])), ([列值],[列值])), ([列值],[列值])); 示例: INSERT INTO cmf_zichan_logs(goods_id,goods_l …