sql server几种Join的区别测试方法
主要来介绍下InnerJoin,FullOutJoin,CrossJoin,LeftJoin,RightJoin的区别。
InnerJoin:筛选两边都有的记录
FullOutJoin:两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出
CrossJoin:列出两边所有组合,也称为笛卡尔集A×B
LeftJoin:以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出
RightJoin:以右边的表为主表,列出主表所有记录,匹配能匹配的,不匹配的用NULL列出
下面来看代码:
创建测试表:
CREATETABLECONSUMERS ( CONSUMER_IDINTNOTNULL, CONSUMER_NAMEVARCHAR(10)NOTNULL ) CREATETABLEORDERS ( CONSUMER_IDINTNOTNULL, ORDER_IDVARCHAR(10)NOTNULL)
编测试数据
INSERTCONSUMERSVALUES(1,'AA') INSERTCONSUMERSvalues(2,'BB') INSERTCONSUMERSvalues(3,'CC') INSERTORDERSVALUES(2,'O100001') INSERTORDERSVALUES(3,'O100002') INSERTORDERSVALUES(3,'O100003') INSERTORDERSVALUES(4,'O100004')
测试
--InnerJoin --筛选两边都有的记录 SELECT* FROMORDERSoINNERJOINCONSUMERSc ONo.CONSUMER_ID=c.CONSUMER_ID --FullOutJoin --两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出 SELECT* FROMORDERSoFULLOUTERJOINCONSUMERSc ONo.CONSUMER_ID=c.CONSUMER_ID --CrossJoin --列出两边所有组合,即笛卡尔集A×B SELECT* FROMORDERSoCROSSJOINCONSUMERSc --LeftJoin --以左边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出 SELECT* FROMCONSUMERScleftjoinORDERSo onc.CONSUMER_ID=o.CONSUMER_ID --RightJoin --以右边的表为主表,列出主表所有记录,匹配能匹配的,不能匹配的用NULL列出 SELECT* FROMCONSUMERScRIGHTJOINORDERSo onc.CONSUMER_ID=o.CONSUMER_ID
ok了,具体的大家可以参考毛票票以前发布的文章。
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短