聯接用于組合來自多個表的記錄。 基于來自這些表的公共列/值來連接表。
有不同類型的聯接可用。
內連接組合來自多個表的記錄,并返回兩個表中存在的值。
以下是INNER JOIN語句的語法。
SELECT col1, col2, col3…. FROM Table-1 INNER JOIN Table-2 ON (col1 = col2) <WHERE condition>;
考慮下面的員工表和工資表。
員工不 | 名字 | 姓 | JoinedDate | 部門 | 生日 |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
員工不 | 毛 | 扣除 | 扣除... |
---|---|---|---|
101 | 40,000 | 4,000 | 36,000 |
102 | 80,000 | 6,000 | 74,000 |
103 | 90,000 | 7,000 | 83,000 |
104 | 75,000 | 5,000 | 70,000 |
考慮下面的員工表和工資表。
SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay FROM Employee A INNER JOIN Salary B ON (A.EmployeeNo = B. EmployeeNo);
當執(zhí)行上述查詢時,它返回以下記錄。 員工105不包括在結果中,因為它在薪金表中沒有匹配的記錄。
*** Query completed. 4 rows found. 3 columns returned. *** Total elapsed time was 1 second. EmployeeNo DepartmentNo NetPay ----------- ------------ ----------- 101 1 36000 102 2 74000 103 2 83000 104 2 70000
LEFT OUTER JOIN和RIGHT OUTER JOIN也合并了多個表的結果。
LEFT OUTER JOIN 返回左表中的所有記錄,并僅返回來自右表的匹配記錄。
RIGHT OUTER JOIN 返回右表中的所有記錄,并僅返回左表中匹配的行。
FULL OUTER JOIN 結合了LEFT OUTER和RIGHT OUTER JOINS的結果。 它從連接的表返回匹配和不匹配的行。
以下是OUTER JOIN語句的語法。 您需要使用LEFT OUTER JOIN,RIGHT OUTER JOIN或FULL OUTER JOIN中的一個選項。
SELECT col1, col2, col3…. FROM Table-1 LEFT OUTER JOIN/RIGHT OUTER JOIN/FULL OUTER JOIN Table-2 ON (col1 = col2) <WHERE condition>;
請考慮以下LEFT OUTER JOIN查詢的示例。 它返回來自Employee表的所有記錄和來自Salary表的匹配記錄。
SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay FROM Employee A LEFT OUTER JOIN Salary B ON (A.EmployeeNo = B. EmployeeNo) ORDER BY A.EmployeeNo;
當執(zhí)行上述查詢時,它將產生以下輸出。 對于員工105,NetPay值為NULL,因為它在薪金表中沒有匹配的記錄。
*** Query completed. 5 rows found. 3 columns returned. *** Total elapsed time was 1 second. EmployeeNo DepartmentNo NetPay ----------- ------------ ----------- 101 1 36000 102 2 74000 103 2 83000 104 2 70000 105 3 ?
交叉連接將左表中的每一行連接到右表中的每一行。
以下是CROSS JOIN語句的語法。
SELECT A.EmployeeNo, A.DepartmentNo, B.EmployeeNo,B.NetPay FROM Employee A CROSS JOIN Salary B WHERE A.EmployeeNo = 101 ORDER BY B.EmployeeNo;
以下是CROSS JOIN語句的語法。...
*** Query completed. 4 rows found. 4 columns returned. *** Total elapsed time was 1 second. EmployeeNo DepartmentNo EmployeeNo NetPay ----------- ------------ ----------- ----------- 101 1 101 36000 101 1 104 70000 101 1 102 74000 101 1 103 83000
更多建議: