- 相關(guān)推薦
SQL:JOIN完全用法的解答
外聯(lián)接
外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接。在 FROM 子句中指定外聯(lián)接時,可以由下列幾組關(guān)鍵字中的一組指定:LEFT JOIN 或 LEFT OUTER JOIN。
左向外聯(lián)接的結(jié)果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
FULL JOIN 或 FULL OUTER JOIN。
完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結(jié)果集行包含基表的數(shù)據(jù)值。
僅當(dāng)至少有一個同屬于兩表的行符合聯(lián)接條件時,內(nèi)聯(lián)接才返回行。內(nèi)聯(lián)接消除與另一個表中的任何行不匹配的行。而外聯(lián)接會返回 FROM 子句中提到的至少一個表或視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行。完整外部聯(lián)接中兩個表的所有行都將返回。
Microsoft SQL Server 2000 對在 FROM 子句中指定的外聯(lián)接使用以下 SQL-92 關(guān)鍵字:
LEFT OUTER JOIN 或 LEFT JOIN
RIGHT OUTER JOIN 或 RIGHT JOIN
FULL OUTER JOIN 或 FULL JOIN
SQL Server 支持 SQL-92 外聯(lián)接語法,以及在 WHERE 子句中使用 *= 和 =* 運(yùn)算符指定外聯(lián)接的舊式語法。由于 SQL-92 語法不容易產(chǎn)生歧義,而舊式 Transact-SQL 外聯(lián)接有時會產(chǎn)生歧義,因此建議使用 SQL-92 語法。
使用左向外聯(lián)接
假設(shè)在 city 列上聯(lián)接 authors 表和 publishers 表。結(jié)果只顯示在出版商所在城市居住的作者(本例中為 Abraham Bennet 和 Cheryl Carson)。
若要在結(jié)果中包括所有的作者,而不管出版商是否住在同一個城市,請使用 SQL-92 左向外聯(lián)接。下面是 Transact-SQL 左向外聯(lián)接的查詢和結(jié)果:
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完全用法的解答】相關(guān)文章:
sql語法大全03-23
Sql認(rèn)證考試內(nèi)容06-08
MySQL導(dǎo)出導(dǎo)入SQL文件命令方法06-29
all用法要點07-24
again用法詳解08-25
對茶文化的問題與解答07-20
英語介詞to的用法匯總02-01
英語方位名詞的用法07-19
俄語動詞“體”的用法02-04