网络营销电子商务研究中心  
How to buy the best prescription safety glasses in Canada? Let's study!
Go Back   网络营销电子商务研究中心 > 服务器与数据库 > MySQL
User Name
Password
 
FAQ Members List Calendar Cheap Glasses

Reply
 
Thread Tools Display Modes
  #1   IP: 112.87.30.213
Old 2016-08-17, 07:11 AM
Tallassee Tallassee is offline
初级会员
 
Join Date: 2008-01-29
Posts: 1
Tallassee 现在声名狼藉
Default MySQL中链接查询inner join与left join使用

在有些场景下需要我们对两个表里的结果进行查询,这个时候就需要连接查询了。连接查询其实就是对两个表记录做笛卡尔乘积。如果不指定连接条件的话,则会对每行都做笛卡尔乘积,这样最后返回的结果树就会是两个表记录数的乘积;如果指定则,则仅对符合列条件的行进行笛卡尔乘积,并返回结果。在这里可以指定两个列相等,也可以自定两个列其他逻辑关系,而且也可以指定多个列通过or或者and进行连接。


mysql中主要可以使用如下几种join语法

1:join、inner join、cross join;语法select * from A inner join B on A.id = B.A_ID,返回匹配的行

2:left join;语法 select * from A left join B on A.id = B.A_ID,即使右表中没有匹配,也返回左表的所有的行,右表没匹配的都为null;

3:right join ;语法select * from A right join B on A.id = B.A_ID,即使左表中没有匹配,也返回右表所有的行,左表没匹配的都为null。

对于join语法有以下几点需要注意。

1:在mysql中,cross join可以由join或者inner join实现,这和mysql的实现是有关系的。对于cross join操作,是仅作笛卡尔积而没有过滤条件,就是说没有on关键字;对于join与inner join是有on关键字的。当使用join或者inner join而不使用on关键字,那么其作用就和cross join的作用一样了。

2:在mysql中没有out join,其实left join相当于left out join,同样对于right join也是类似。

3:对于mysql中join语法与两个表使用逗号隔开是一样的,也就是说select * from A join B = select * from A, B

4:当不是返回所有列的时候,必须指定某个表的某一列。select name from A join B on A.id = B.id则会报语法错误,必须对name前加上表格限定。

具体使用,现在有两个表person与comment表格:


场景1,inner join

可以看出,它只返回了相应的匹配的行,对没有匹配的行它没有把值返回。这里是针对了两个表的某一列进行连接,如果不指定列则会返回六条记录

场景2:left join

可以看出我们是利用comment left join person的,按照前文说的left join的 时候是按照左表来返回结果,而不管右表是否存在相应的匹配内容。通过开始的查询看到comment

含有三条记录,对于comment表中id=3的记录,在person表中没有对应的person,但是它还是返回了,只是返回的结果都为null。

场景3:right join

现在采用了right join,则查询结果是按照右表返回的。在右表person表中只有两条记录,所以只返回了两条记录。对于comment表中有而person表中没有的记录则直接忽略。
Attached Images
File Type: png 1.png (25 KB, 1 views)
File Type: png 5.png (10 KB, 1 views)
File Type: jpg 2.jpg (161 KB, 1 views)
File Type: jpg 3.jpg (180 KB, 1 views)
File Type: jpg 4.jpg (170 KB, 1 views)

Last edited by Tallassee : 2016-08-17 at 07:18 AM
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Prescription-glasses.com offers prescription glasses online at discount prices.
All times are GMT +8. The time now is 10:58 AM.


Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.