91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL左連接語句怎么寫

發布時間:2022-01-21 09:28:51 來源:億速云 閱讀:438 作者:iii 欄目:開發技術

這篇文章主要介紹了SQL左連接語句怎么寫的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SQL左連接語句怎么寫文章都會有所收獲,下面我們一起來看看吧。

關系型數據庫中,表之間通常以某種方式相互關聯,允許它們的信息在整個數據庫中僅寫入一次。然后,當你需要分析數據時,你需要組合來自這些相關表的信息。

要在 SQL 中執行此操作,您可以使用JOIN語句。該LEFT JOIN語句是可用的各種JOIN語句之一。當您使用它連接兩個表時,它會保留第一個表(左表)的所有行,即使第二個表上沒有對應的匹配項。

您可以JOINSELECT查詢中使用連接兩個表table_1table_2,如下所示:

SELECT columns
FROM table_1
LEFT OUTER JOIN table_2
ON relation;
SELECT columns
FROM table_1
LEFT JOIN table_2
ON relation;

首先你寫下哪些列將出現在連接表中。你可以通過在列名前加上表名來指定該列屬于哪個表。如果某些列的名稱(如table_1.column_1table_2.column_1)與SELECT <columns>.

然后你可以將第一個表的名稱寫為FROM table_1.

之后,你再將第二個表的名稱寫為LEFT OUTER JOIN table_2or LEFT JOIN table_2(省略OUTER關鍵字)。

最后,你要編寫用于匹配行的關系,例如ON table_1.column_A = table_2.column_B. 通常關系是通過 id 來的,但它可以是任何列。

SQL LEFT JOIN 示例

假設你有一個書籍數據庫,其中有兩個表,一個是書籍,另一個是作者。為避免重復每本書的所有作者信息,該信息位于其自己的表中,并且書籍只有該author_name列。

BOOK_IDTITLEAUTHOR_NAMEPUBL_YEAR
1Uno, nessuno e centomila路易吉·皮蘭德羅1926
2Il visconte dimezzato伊塔洛·卡爾維諾1952
3Le tigri di Mompracem埃米利奧·薩爾加里1900
4Il giorno della civetta萊昂納多·夏夏1961
5A ciascuno il suo萊昂納多·夏夏1966
6Il fu Mattia Pascial路易吉·皮蘭德羅1904
7I Malavoglia
喬瓦尼·維爾加1881
AUTHOR_IDNAMEYEAR_OF_BIRTHPLACE_OF_BIRTHTRVIA
1路易吉·皮蘭德羅1867阿格里真托1934年諾貝爾文學獎
2喬瓦尼·維爾加1840維齊尼1920年至1922年任意大利王國參議員
3伊塔洛·斯韋沃1861的里雅斯特真名是Aron Hector Schmitz
4切薩雷·帕韋塞1908圣斯特凡諾貝爾博null
5朱塞佩·托馬西·迪·蘭佩杜薩1896巴勒莫1934年至1957年任蘭佩杜薩王子

我們可以根據作者的姓名連接這兩個表。使用該books表作為左表,你可以編寫以下代碼將它們連接起來:

SELECT books.title AS book_title, books.publ_year, books.author_name, authors.year_of_birth, authors.place_of_birth
   FROM books
   LEFT JOIN authors
   ON books.author_name = authors.name
;

讓我們分解一下。

在第一行中,你可以選擇要在最終表格中顯示的列。它也是決定某些列在結果表中是否具有不同名稱的地方,使用ASlike with books.title AS book_title

第二行 ,FROM books表示要考慮的第一個表,也稱為左表。

然后第三行,LEFT JOIN authors,說明要考慮的其他表。

ON books.author_name = authors.name說使用行books.author_name和匹配表authors.name

在此查詢之后,您將獲得如下表,其中未從作者表中獲取信息的行僅顯示NULL.

BOOK_NAMEPUBL_YEARAUTHOR_NAMEYEAR_OF_BIRTHPLACE_OF_YEAR
Uno, nessuno e centomila1926路易吉·皮蘭德羅1867阿格里真托
Il visconte dimezzato1952伊塔洛·卡爾維諾nullnull
Le tigri di Mompracem1900埃米利奧·薩爾加里null
null
Il giorno della civetta1961萊昂納多·夏夏null
null
A ciascuno il suo1966萊昂納多·夏夏null
null
伊夫·馬蒂亞·帕斯卡1904路易吉·皮蘭德羅1867阿格里真托
我馬拉沃利亞1881喬瓦尼·維爾加1840維齊尼

請注意,不在books表中的作者不在此連接表中。這是因為,正如我之前所說,只保留左表(在本例中books)中不相關的行,而不是右/第二個表中的行。

更復雜的 LEFT JOIN 示例

讓我們看看另一種可以JOIN與其他 SQL 功能一起使用來進行數據分析的方法。

您可能想查看數據庫中存在每位作者的圖書數量。您可以使用以下查詢來執行此操作:

SELECT authors.name AS author_name,
    SUM(
      CASE
        WHEN books.title LIKE '%'
          THEN 1
        ELSE 0
      END
    ) as number_of_books
  FROM authors
  LEFT JOIN books
  ON books.author_name = authors.name
  GROUP BY authors.name
  ORDER BY number_of_books DESC
;
代碼分解

第 1 行:SELECT在結果表中列出所需的列。

第 2 行:SUM是與 GROUP BY 結合使用的聚合函數。然后將組合在一起的行的值相加。

第 3-7 行:您使用CASE 語句根據條件獲得不同的結果。在這種情況下,如果一行包含書名,則計為 1,否則計為 0。這里我們LIKE用來檢查單元格是否包含任何字符。

第 8 行:這給出了number_of_books為 SUM 創建的列的名稱。

第 9 行:本例中的左/第一個表是authors

第 10 行:本例中右側/第二個表是books

第 11 行:這將使用作者姓名連接兩個表。

第 12 行:行按作者姓名分組- 該列中具有相同值的所有行將由一行表示。

第 13 行:我們使用order by使用書籍數量降序排列。

該查詢將為您提供下表。請注意,在此處只能看到authors表中的作者。books表中提到的沒有authors表中條目的作者在此不存在。這是books表中不相關的行沒有保留這一事實的結果。

如果authors表更新為包括books表中提到的所有作者,如下所示:

AUTHOR_NAMENUMBER_OF_BOOKS
路易吉·皮蘭德羅2
喬瓦尼·維爾加1
切薩雷·帕韋塞0
朱塞佩·托馬西·迪·蘭佩杜薩0
伊塔洛·斯韋沃0
AUTHOR_IDNAMEYEAR_OF_BIRTHPLACE_OF_BIRTHTRIVA
1路易吉·皮蘭德羅1867阿格里真托1934年諾貝爾文學獎
2喬瓦尼·維爾加1840維齊尼1920年至1922年任意大利王國參議員
3伊塔洛·斯韋沃1861的里雅斯特真名是Aron Hector Schmitz
4切薩雷·帕韋塞1908圣斯特凡諾貝爾博nulll
5朱塞佩·托馬西·迪·蘭佩杜薩1896巴勒莫1934年至1957年任蘭佩杜薩王子
6伊塔洛·卡爾維諾1923圣地亞哥·德·拉斯維加斯nulll
7埃米利奧·薩爾加里1862維羅納nulll
8萊昂納多·夏夏1921拉卡爾穆托nulll

那么上面查詢中的表格實際上會給出所有作者的書籍數量。

AUTHOR_NAMENUMBER_OF_BOOKS
萊昂納多·夏夏2
路易吉·皮蘭德羅2
埃米利奧·薩爾加里1
喬瓦尼·維爾加1
喬瓦尼·維爾加1
切薩雷·帕韋塞0
朱塞佩·托馬西·迪·蘭佩杜薩0
伊塔洛·斯韋沃0

關于“SQL左連接語句怎么寫”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SQL左連接語句怎么寫”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

隆德县| 长宁县| 乐安县| 淮滨县| 惠水县| 昭通市| 比如县| 皮山县| 洞口县| 揭西县| 文登市| 特克斯县| 潼南县| 马山县| 英吉沙县| 江陵县| 大荔县| 津市市| 武宁县| 辰溪县| 绵阳市| 巴彦淖尔市| 蓝山县| 蓬溪县| 桂林市| 无棣县| 肥西县| 林口县| 沂南县| 乐安县| 阳泉市| 西贡区| 汉中市| 兴山县| 翁牛特旗| 商南县| 定远县| 元江| 沭阳县| 林芝县| 互助|