加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL的JOIN类型有哪些 有什么不同

发布时间:2023-06-15 13:59:45 所属栏目:MsSql教程 来源:
导读: SQL的JOIN类型有哪些?JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。文本主要给大家介绍SQL中JOIN的几种类型的区别是什么,感兴趣的朋友就继续往下看吧。 SQL的JOIN类型主要有In

    SQL的JOIN类型有哪些?JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。文本主要给大家介绍SQL中JOIN的几种类型的区别是什么,感兴趣的朋友就继续往下看吧。

    SQL的JOIN类型主要有Inner Join , Full Out Join , Cross Join , Left Join , Right Join这五种。

     Inner Join:筛选两边都有的记录

     Full Out Join:两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出

     Cross Join:列出两边所有组合,也称为笛卡尔集 A×B

     Left Join:以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用 NULL列出

     Right Join:以右边的表为主表,列出主表所有记录,匹配能匹配的,不匹配的用NULL列出

    下面来看代码:

    创建测试表:

CREATETABLE CONSUMERS

(

CONSUMER_ID INTNOTNULL,

CONSUMER_NAME VARCHAR(10) NOTNULL

)

CREATETABLE ORDERS

(

CONSUMER_ID INTNOTNULL,

ORDER_ID VARCHAR(10) NOTNULL)

    编测试数据

INSERT CONSUMERS VALUES ( 1, 'AA')

INSERT CONSUMERS values ( 2, 'BB')

INSERT CONSUMERS values ( 3, 'CC')

INSERT ORDERS VALUES ( 2, 'O100001')

INSERT ORDERS VALUES ( 3, 'O100002')

INSERT ORDERS VALUES ( 3, 'O100003')

INSERT ORDERS VALUES ( 4, 'O100004')

    测试

--Inner Join

--筛选两边都有的记录

SELECT *

FROM ORDERS o INNER JOIN CONSUMERS c

ON o.CONSUMER_ID = c.CONSUMER_ID

--Full Out Join

--两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出

SELECT *

FROM ORDERS o FULL OUTER JOIN CONSUMERS c

ON o.CONSUMER_ID = c.CONSUMER_ID

--Cross Join

--列出两边所有组合,即笛卡尔集A×B

SELECT *

FROM ORDERS o CROSS JOIN CONSUMERS c

--Left Join

--以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出

SELECT *

FROM CONSUMERS c left join ORDERS o

on c .CONSUMER_ID = o .CONSUMER_ID

--Right Join

--以右边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出

SELECT *

FROM CONSUMERS c RIGHT JOIN ORDERS o

on c .CONSUMER_ID = o .CONSUMER_ID

     现在大家对于SQL的几种JOIN类型的区别应该都有所了解了吧,上述示例对大家理解join的几种区别有一定的而帮助,,有需要的朋友可以参考学习。想要了解更多SQL的JOIN的用法,大家可以继续关注其他文章。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章