亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL?JOIN?子句合并多個(gè)表中相關(guān)行全面指南

 更新時(shí)間:2023年11月27日 08:49:31   作者:小萬哥  
這篇文章主要為大家介紹了SQL?JOIN?子句合并多個(gè)表中相關(guān)行全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

SQL JOIN

JOIN子句用于基于它們之間的相關(guān)列合并來自兩個(gè)或更多表的行。

讓我們看一下“Orders”表的一部分選擇:

OrderIDCustomerIDOrderDate
1030821996-09-18
10309371996-09-19
10310771996-09-20

然后,看一下“Customers”表的一部分選擇:

CustomerIDCustomerNameContactNameCountry
1Alfreds FutterkisteMaria AndersGermany
2Ana Trujillo Emparedados y heladosAna TrujilloMexico
3Antonio Moreno TaqueríaAntonio MorenoMexico

注意,“Orders”表中的“CustomerID”列是指“Customers”表中的“CustomerID”。上述兩個(gè)表之間的關(guān)系是“CustomerID”列。

然后,我們可以創(chuàng)建以下SQL語句(包含INNER JOIN),選擇在兩個(gè)表中具有匹配值的記錄:

示例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

它將產(chǎn)生類似于以下的結(jié)果:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados9/18/1996
10365Antonio Moreno Taquería11/27/1996
10383Around the Horn12/16/1996
10355Around the Horn11/15/1996
10278Berglunds snabbköp8/12/1996

不同類型的SQL JOIN

以下是SQL中不同類型的JOIN:

  • (INNER) JOIN:返回在兩個(gè)表中具有匹配值的記錄
  • LEFT (OUTER) JOIN:返回左表中的所有記錄以及右表中匹配的記錄
  • RIGHT (OUTER) JOIN:返回右表中的所有記錄以及左表中匹配的記錄
  • FULL (OUTER) JOIN:在左表或右表中有匹配時(shí)返回所有記錄

這些JOIN類型可以根據(jù)您的需求選擇,以確保檢索到所需的數(shù)據(jù)。希望這能幫助你理解SQL中JOIN的概念。如果有其他問題,請(qǐng)隨時(shí)告訴我。

SQL INNER JOIN

INNER JOIN關(guān)鍵字選擇在兩個(gè)表中具有匹配值的記錄。

讓我們看一下Products表的一部分選擇:

ProductIDProductNameCategoryIDPrice
1Chais118
2Chang119
3Aniseed Syrup210

以及Categories表的一部分選擇:

CategoryIDCategoryNameDescription
1BeveragesSoft drinks, coffees, teas, beers, and ales
2CondimentsSweet and savory sauces, relishes, spreads, and seasonings
3ConfectionsDesserts, candies, and sweet breads

我們將使用兩個(gè)表的CategoryID字段連接Products表和Categories表:

使用INNER JOIN關(guān)鍵字連接ProductsCategories

SELECT ProductID, ProductName, CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;

SQL INNER JOIN

注意:INNER JOIN關(guān)鍵字僅返回兩個(gè)表中具有匹配值的行。這意味著如果您有一個(gè)沒有CategoryID的產(chǎn)品,或者CategoryIDCategories表中不存在的記錄,該記錄將不會(huì)在結(jié)果中返回。

語法

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

指定列名

在SQL語句中指定列時(shí),最好在列名前包含表名。

指定表名:

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;

上面的示例在不指定表名的情況下也可以工作,因?yàn)橹付ǖ牧忻趦蓚€(gè)表中都不存在。如果嘗試在SELECT語句中包含CategoryID,則如果不指定表名,將會(huì)出現(xiàn)錯(cuò)誤(因?yàn)?code>CategoryID在兩個(gè)表中都存在)。

JOIN或INNER JOIN

JOIN和INNER JOIN將返回相同的結(jié)果。

INNER是JOIN的默認(rèn)連接類型,因此當(dāng)您寫JOIN時(shí),解析器實(shí)際上會(huì)寫INNER JOIN。

示例

JOIN與INNER JOIN相同:

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
JOIN Categories ON Products.CategoryID = Categories.CategoryID;

連接三個(gè)表

以下SQL語句選擇具有客戶和承運(yùn)商信息的所有訂單:

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

INNER JOIN用于將多個(gè)表中的數(shù)據(jù)連接在一起,以便根據(jù)關(guān)聯(lián)列的匹配情況檢索相應(yīng)的數(shù)據(jù)。希望這幫助你理解INNER JOIN的使用方式。如果有其他問題,請(qǐng)隨時(shí)提出。

SQL LEFT JOIN關(guān)鍵字

SQL LEFT JOIN關(guān)鍵字返回左表(table1)中的所有記錄以及右表(table2)中的匹配記錄。如果沒有匹配,則右側(cè)的結(jié)果為0條記錄。

LEFT JOIN語法

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

注意:在某些數(shù)據(jù)庫(kù)中,LEFT JOIN被稱為L(zhǎng)EFT OUTER JOIN。

SQL LEFT JOIN

演示數(shù)據(jù)庫(kù)

在本教程中,我們將使用著名的Northwind示例數(shù)據(jù)庫(kù)。

以下是“Customers”表的部分選擇:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

以及“Orders”表的部分選擇:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
10308271996-09-183
103093731996-09-191
103107781996-09-202

示例

假設(shè)我們想要檢索所有客戶以及他們的訂單(如果有的話)。我們可以使用LEFT JOIN將兩個(gè)表連接在一起,以便即使某些客戶沒有訂單,它們?nèi)匀粫?huì)在結(jié)果中顯示。

SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

在這個(gè)例子中,LEFT JOIN確保了所有的客戶都會(huì)出現(xiàn)在結(jié)果中,而與之關(guān)聯(lián)的訂單信息(如果存在的話)也會(huì)被檢索出來。如果某個(gè)客戶沒有訂單,相應(yīng)的OrderID和OrderDate列將顯示為NULL。

希望這能幫助你理解SQL中LEFT JOIN的使用方式。

以上就是SQL JOIN 子句合并多個(gè)表中相關(guān)行全面指南的詳細(xì)內(nèi)容,更多關(guān)于SQL JOIN 子句多表合并的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論