SQL 百分网手机站

SQL:JOIN完全用法的解答

时间:2018-04-30 12:24:58 SQL 我要投稿

SQL:JOIN完全用法的解答

  外联接

  外联接可以是左向外联接、右向外联接或完整外部联接。在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:LEFT JOIN 或 LEFT OUTER JOIN。

  左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的`所有选择列表列均为空值。

  RIGHT JOIN 或 RIGHT OUTER JOIN。

  右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

  FULL JOIN 或 FULL OUTER JOIN。

  完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

  仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。

  Microsoft SQL Server 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字:

  LEFT OUTER JOIN 或 LEFT JOIN

  RIGHT OUTER JOIN 或 RIGHT JOIN

  FULL OUTER JOIN 或 FULL JOIN

  SQL Server 支持 SQL-92 外联接语法,以及在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。由于 SQL-92 语法不容易产生歧义,而旧式 Transact-SQL 外联接有时会产生歧义,因此建议使用 SQL-92 语法。

  使用左向外联接

  假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。

  若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用 SQL-92 左向外联接。下面是 Transact-SQL 左向外联接的查询和结果:

  USE pubs

  SELECT a.au_fname, a.au_lname, p.pub_name

  FROM authors a LEFT OUTER JOIN publishers p

  ON a.city = p.city

  ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

【SQL:JOIN完全用法的解答】相关文章:

1.SQL优化过程中常见OracleHINT用法盘点

2.SQL语句详解 MySQL update的用法

3.SQL优化大全

4.关于SQL学习教程

5.SQL语句结构示例

6.oracle的sql语句

7.sql语句的使用

8.sql语法大全