WEB开发网
开发学院数据库MySQL Mysql入门系列:检索MYSQL记录 阅读

Mysql入门系列:检索MYSQL记录

 2006-12-31 10:46:29 来源:WEB开发网   
核心提示: 有时,表名限定符还不能解决列的引用问题,Mysql入门系列:检索MYSQL记录(4),例如,如果在一个查询中多次使用一个表,有的数据库还有,RIGHT JOIN,用表名限定列名没有什么用处,在此情况下

有时,表名限定符还不能解决列的引用问题。例如,如果在一个查询中多次使用一个表,用表名限定列名没有什么用处。在此情况下,为表达您的想法可使用别名。给表指派一个别名,利用这个别名来引用列,其语法为: alias _ name.col _ name。下面的查询将表与

自身进行连接,给表指派了一个别名,以便应付引用列时有歧义的情况:

3.6.3 左连接

等价连接只给出两个表匹配的行。左连接也给出匹配行,但它还显示左边表中有的但在右边表中无匹配的行。对于这样的行,从右边表中选择的列都显示为NULL。这样,每一行都从左边表中选出。如果右边表中有一个匹配行,则该行被选中。如果不匹配,行仍然被选中,但它是一个“假”行,其中所有列被设置为NULL。换句话说,LEFT JOIN 强制结果集包含对应左边表中每一行的行,而不管左边表中的行在右边表中是否有匹配的行。匹配是根据ON 或USING( ) 子句中给出的列进行的。不管所连接的列是否具有相同的名称,都可使用ON。如:

USING( ) 子句类似于O N,但连接列的名称必须在每个表中是相同的。下面的查询将my_tbl1.b 连接到my _ t b l 2 . b:

在希望只查找出现在左边表而不出现在右边表中的行时, LEFT JOIN 极为有用。可通过增加一条查询右边表中具有NULL 值的列的WHERE 子句来完成这项工作。

一般不用担心选择为NULL 的列,因为没有什么意思。真正要关心的是左边表中不匹配的列,如:

利用LEFT JOIN 时有一件事情需要提防,如果所连接的列未定义为NOT NULL,将会在结果中得出一些无关的行。

LEFT JOIN 有几个同义词和变种。LEFT OUTER JOIN 为LEFT JOIN 的一个同义词。

LEFT JOIN 还有一个为MySQL所接受的ODBC 表示如下(“o j”意为“outer join”):

N ATURAL LEFT JOIN 类似于LEFT JOIN;它执行一个LEFT JOIN,匹配左边表和右边表中具有相同名称的所有列。

有的数据库还有,RIGHT JOIN,但MySQL迄今还没有。

查看全套"Mysql入门系列教程 ">>>>>

上一页  1 2 3 4 

Tags:Mysql 入门 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接