码迷,mamicode.com
首页 > 其他好文 > 详细

Select的深入应用(2)

时间:2015-03-13 18:06:26      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:

首先创建两张表。

 技术分享

技术分享

全连接

全连接:在检索时指定多个表,将每个表用逗号分隔,这样每个表的数据行都和其他表的每行交叉产生所有可能的组合,这样就是一个全连接。所有可能的组和数即每个表的行数的乘积。

技术分享 

或者:

技术分享 

通常需要where子句来作限制条件,否则全连接将产生很多条数据

技术分享 

 

左连接

左连接:全连接给出FROM子句中所有表都有匹配的行。对于左连接,不仅匹配类似前面的行记录,而且还显示左边的表有而右边的表中无匹配的行。对于这样的行,从右边表选择的列均被显示为NULL。这样,每一匹配的行都从左边的表被选出,而如果右边表有一个匹配的行,则被选中,如果不匹配,行仍然被选中,不过,其中右边相应的列在结果集中均设为NULL。即,LEFT JOIN强制包含左边表的每一行,而不管右边表是否匹配。

技术分享 

上面的结果,即用左边表的每一行与右边表匹配,如果匹配,则选择到结果集中,如果没有匹配,则结果集中,右边表相应的列置为NULL。

一个奇怪的例子:

技术分享 

因为,在结果的最后两行有似乎你不希望的结果。记住,如果只有ON子句的条件,那么左边表的每一行都会返回,只是如果没有匹配的右边表(虽然本例没有约束右边表的列),则记录集中显示为NULL。

与IS NULL或者IS NOT NULL是常用组合

技术分享 

检索id值只在左边表出现而不在右边表出现

技术分享 

Select的深入应用(2)

标签:

原文地址:http://www.cnblogs.com/ryansunyu/p/4335367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!