LeetCode:資料庫技術【175—178】
阿新 • • 發佈:2018-11-05
LeetCode:資料庫技術【175—178】
LeetCode已經刷完200道題目,但這只是開始,下一段時間,仍然把刷題作為重點,爭取再次完成200道,本篇部落格將會帶大家熟悉一些資料庫面試題,從簡單到複雜,並且會把相關知識點全部闡述一下。
175.組合兩個表
題目描述
表1: Person
+-------------+---------+ | 列名 | 型別 | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------+ PersonId 是上表主鍵
表2: Address
+-------------+---------+ | 列名 | 型別 | +-------------+---------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | +-------------+---------+ AddressId 是上表主鍵
編寫一個 SQL 查詢,滿足條件:無論 person 是否有地址資訊,都需要基於上述兩表提供 person 的以下資訊:
FirstName, LastName, City, State
題目分析
首先題目說了,不管person是否有地址資訊,都要顯示4列資訊,那麼就是說第二張表允許顯示NULL資料。這裡涉及的知識點是聯結查詢中的外部聯結:
外部聯結
許多聯結將一個表中的行與另一個表中的行相關聯。但有時候會需要包含沒有關聯行的那些行。例如本題。聯結包含了那些在相關表中沒有關聯行的行。這種 型別的聯結稱為外部聯結。
SELECT FirstName, LastName, City, State FROM Person LEFT OUTER JOIN Address ON Person.PersonId = Address.PersonId;
首先使用了關鍵字OUTER JOIN 來指定聯結的型別為外部聯結,必須使用RIGHT或LEFT關鍵字指定包括其所有行的表(RIGHT指出的是OUTER JOIN右邊的表,而LEFT 指出的是OUTER JOIN左邊的表)。也即是說,OUTER JOIN的兩邊分別是兩張表,LEFT或RIGHT說了那張表的資料必須給出,另一張表的資料可以為NULL。