SQL中LEFT JOIN、Inner Join、Right Join、Left Outer Join、full join区别

来源:互联网 发布:网络直播策划方案脚本 编辑:程序博客网 时间:2024/05/19 13:30

定义2个表A、BA表id  name age1 lei122 mao13 zhang23B表id   name age1 lei222 lei24 mao  15 lei666 gao99一、Inner Join:SELECT * FROM test.a INNER JOIN test.bon a.`name` = b.`name`就是当A表中的name和B表的name相等时的结果集,遍历A表name,如果B表中name和A表相等,则显示该记录id   nameageid1 name1age11 lei  121lei 221 lei12 2     lei22 mao1 4 mao   11 lei12 5 lei 66ps:其在寓意上和我们平时写的SELECT * FROM test.a, test.b where a.`name` = b.`name`是一样的。二、Left join:是left outer join的缩写左连接,以A表为准,查询结果显示A表所有记录,如果B表有匹配的,则显示,如果没有,则显示为nullSELECT * FROM test.a LEFT JOIN test.bon a.`name` = b.`name`id  name age id1 name1 age11 lei121lei 221 lei 122lei21 lei 125lei662 mao 14mao13 zhang 23 null null null三、right join:是right outer join的缩写右连接、以B表为主表,查询结果显示B表所有记录,如果A表有匹配的,则显示A表记录字段,如果没有,则显示nullSELECT * FROM test.a RIGHT JOIN test.bon a.`name` = b.`name` id  nameageid1name1age11lei12 1lei221 lei122 lei 22 mao14 mao 11 lei125 lei66null nullnull6gao99 四、full join:全连接,查询结果显示A表和B的所有记录,如果A表没有匹配的,则A表记录列显示,否则显示为null,如果B表有匹配的,显示B表列显示B表记录字段值,如果B表没有,B表列显示null因为mysql中不支持full join,故采用另外一种方式SELECT * FROM test.a LEFT JOIN test.bon a.`name` = b.`name`UNIONSELECT * FROM test.a RIGHT JOIN test.bon a.`name` = b.`name`id  name age id1name1age11 lei 121lei221       lei 12  2lei21 lei12 5 lei 662 mao1 4mao13 zhang2 3 nullnullnull   null null 6gao 99  


0 0