Heim > Datenbank > MySQL-Tutorial > 关于Mysql 中 inner join , left join , right join的区别

关于Mysql 中 inner join , left join , right join的区别

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:46:56
Original
1384 Leute haben es durchsucht

关于Mysql 中 inner join , left join , right join的区别 ,他们分别应用在什么情景呢? 现在我们 有2个表 一个是 person 表 一个是 Orders表 结构如下: person表 Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George F

关于Mysql 中 inner join , left join , right join的区别 ,他们分别应用在什么情景呢?


现在我们 有2个表 一个是person 表  一个是 Orders表

结构如下:

person表

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

orders表

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65


1 inner join    

*注意:INNER JOIN 与 JOIN 是相同的。

我们输入如下语句:

select * from  person inner join   orders  on person.id_p = orders.id_p order by lastname ;
Nach dem Login kopieren

得出如下结果:

关于Mysql 中 inner join , left join , right join的区别

结论:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。注意如果颠倒语句中的person和orders表的位置 并不会影响返回行的结果,只会影响字段显示的顺序。


2 left join 

我们输入如下语句:

select person.id_p,person.lastname,orders.id_o,orders.orderno  from  person left  join   orders  on person.id_p = orders.id_p order by lastname desc ;
Nach dem Login kopieren
得出如下结果:

关于Mysql 中 inner join , left join , right join的区别
可以发现这里 有些行的字段值是空的 那是因为  LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。也就是说在没有加上where+条件的情况下 左表中的数据 将会被全部列出,并连接了右表的数据,如果没有匹配,右表的字段值就为空


3 right join 

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

既然明白了 left join 我想 right join 就不难了

如下语句:

select person.id_p,person.lastname,orders.id_o,orders.orderno  from  person right  join   orders  on person.id_p = orders.id_p order by lastname desc ;
Nach dem Login kopieren
结果如下:

关于Mysql 中 inner join , left join , right join的区别

结论:可以和left join 的对比下  右表的数据被全部列出了  orderno为 34764的数据行 中的id_p 是65 ,在左表中显然没有 ,但是也列出来了。就是因为 RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。以右表为主.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage