久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 数据库 > MySQL 3.23 中文参考手册 > 7.13 JOIN句法 文档讨论

MySQL 3.23 中文参考手册

后退 7.13 JOIN句法 前进

2004-02-12 MySQL 译者:晏子 http://www.mysql.com/doc.html
 
MySQL支持下列用于SELECT语句的JOIN句法:

table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional_expr
table_reference LEFT [OUTER] JOIN table_reference USING (column_list)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expr }

上述最后的LEFT OUTER JOIN的句法只是为了与ODBC兼容而存在的。

一个表可以是使用aliasedtbl_name AS alias_name或tbl_name alias_name的起的别名。
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;

INNER JOIN和,(逗号)在语义上是等价的,都是进行一个在使用的表之间的全联结。通常,你指定表应该如何用WHERE条件联结起来。
ON条件是可以用在一个WHERE子句形式的任何条件。
如果在一个LEFT JOIN中没有右表的匹配记录,一个所有列设置为NULL的行被用于右表。你可以使用这个事实指出表中在另一个表中没有对应记录的记录:
mysql> select table1.* from table1
LEFT JOIN table2 ON table1.id=table2.id
where table2.id is NULL;

这个例子找出在table1中所有的行,其id值在table2中不存在(即,所有table1中的在table2中没有对应行的行)。当然这假定table2.id被声明为NOT NULL。

USING (column_list)子句命名一系列必须存在于两个表中的列。 例如一个USING子句:
A LEFT JOIN B USING (C1,C2,C3,...)

被定义成在语义上等同一个这样的ON表达式:

A.C1=B.C1 AND A.C2=B.C2 AND A.C3=B.C3,...

2个表的NATURAL LEFT JOIN被定义为在语义上等同于一个有USING子句命名在两表中存在的所有列的一个LEFT JOIN。
STRAIGHT_JOIN等同于JOIN,除了左表在右表之前被读入,这能用于这些情况,联结优化器将表的顺序放错了。
一些例子:

mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;

见10.5.4 MySQL怎样优化LEFT JOIN。
 
后退 目录 前进
7.12 SELECT句法 上一级 7.14 INSERT句法
 
发表评论 关闭窗口
 相关内容
 
 文档分类
操作系统
网络服务
编程语言
数据库
RFC请求注解
基础原理
软件使用
硬件参考
解决方案
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net