Mysql入门系列:检索MYSQL记录
2006-12-31 10:46:29 来源:WEB开发网有时,表名限定符还不能解决列的引用问题。例如,如果在一个查询中多次使用一个表,用表名限定列名没有什么用处。在此情况下,为表达您的想法可使用别名。给表指派一个别名,利用这个别名来引用列,其语法为: 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迄今还没有。
更多精彩
赞助商链接