{"id":1070,"date":"2019-02-10T18:16:31","date_gmt":"2019-02-10T11:16:31","guid":{"rendered":"http:\/\/www.sqlservertutorial.net\/?page_id=1070"},"modified":"2024-03-02T16:02:53","modified_gmt":"2024-03-02T09:02:53","slug":"sql-server-joins","status":"publish","type":"page","link":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/","title":{"rendered":"SQL Server Joins"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn about various SQL Server joins that allow you to combine data from two tables.<\/p>\n\n\n\n<p>In a relational database, data is distributed in multiple logical tables. To get a complete meaningful set of data, you need to query data from these tables using joins. SQL Server supports many kinds of joins, including <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-inner-join\/\">inner join<\/a>, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-left-join\/\">left join<\/a>, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-right-join\/\">right join<\/a>, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-full-outer-join\/\">full outer join<\/a>, and <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-cross-join\/\">cross join<\/a>. Each join type specifies how SQL Server uses data from one table to select rows in another table.<\/p>\n\n\n\n<p>Let&#8217;s set up sample tables for demonstration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='setting-up-sample-tables'>Setting up sample tables <a href=\"#setting-up-sample-tables\" class=\"anchor\" id=\"setting-up-sample-tables\" title=\"Anchor for Setting up sample tables\">#<\/a><\/h2>\n\n\n\n<p>First, create a new schema named <code>hr<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">SCHEMA<\/span> hr;\nGO<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-create-table\/\">create two new tables<\/a> named <code>candidates<\/code> and <code>employees<\/code> in the <code>hr<\/code> schema:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> hr.candidates(\n    <span class=\"hljs-keyword\">id<\/span> <span class=\"hljs-built_in\">INT<\/span> PRIMARY <span class=\"hljs-keyword\">KEY<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span>,\n    fullname <span class=\"hljs-built_in\">VARCHAR<\/span>(<span class=\"hljs-number\">100<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>\n);\n\n<span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TABLE<\/span> hr.employees(\n    <span class=\"hljs-keyword\">id<\/span> <span class=\"hljs-built_in\">INT<\/span> PRIMARY <span class=\"hljs-keyword\">KEY<\/span> <span class=\"hljs-keyword\">IDENTITY<\/span>,\n    fullname <span class=\"hljs-built_in\">VARCHAR<\/span>(<span class=\"hljs-number\">100<\/span>) <span class=\"hljs-keyword\">NOT<\/span> <span class=\"hljs-literal\">NULL<\/span>\n);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-insert\/\">insert<\/a> some rows into the <code>candidates<\/code> and <code>employees<\/code> tables:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> \n    hr.candidates(fullname)\n<span class=\"hljs-keyword\">VALUES<\/span>\n    (<span class=\"hljs-string\">'John Doe'<\/span>),\n    (<span class=\"hljs-string\">'Lily Bush'<\/span>),\n    (<span class=\"hljs-string\">'Peter Drucker'<\/span>),\n    (<span class=\"hljs-string\">'Jane Doe'<\/span>);\n\n\n<span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> \n    hr.employees(fullname)\n<span class=\"hljs-keyword\">VALUES<\/span>\n    (<span class=\"hljs-string\">'John Doe'<\/span>),\n    (<span class=\"hljs-string\">'Jane Doe'<\/span>),\n    (<span class=\"hljs-string\">'Michael Scott'<\/span>),\n    (<span class=\"hljs-string\">'Jack Sparrow'<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Let&#8217;s call the <code>candidates<\/code> table the left table and the <code>employees<\/code> table the right table.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-inner-join'>SQL Server Inner Join <a href=\"#sql-server-inner-join\" class=\"anchor\" id=\"sql-server-inner-join\" title=\"Anchor for SQL Server Inner Join\">#<\/a><\/h2>\n\n\n\n<p><a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-inner-join\/\">Inner join<\/a> produces a data set that includes rows from the left table, and matching rows from the right table.<\/p>\n\n\n\n<p>The following example uses the inner join clause to get the rows from the <code>candidates<\/code> table that has the corresponding rows with the same values in the <code>fullname<\/code> column of the <code>employees<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">INNER<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"340\" height=\"54\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png\" alt=\"SQL Server Joins - Inner Join\" class=\"wp-image-1071\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png 340w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join-300x48.png 300w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><\/figure>\n\n\n\n<p>The following Venn diagram illustrates the result of the inner join of two result sets:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"258\" height=\"158\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join-1.png\" alt=\"SQL Server Joins - Inner Join\" class=\"wp-image-1122\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-left-join'>SQL Server Left Join <a href=\"#sql-server-left-join\" class=\"anchor\" id=\"sql-server-left-join\" title=\"Anchor for SQL Server Left Join\">#<\/a><\/h2>\n\n\n\n<p><a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-left-join\/\">Left join<\/a> selects data starting from the left table and matching rows in the right table. The left join returns all rows from the left table and the matching rows from the right table. If a row in the left table does not have a matching row in the right table, the columns of the right table will have nulls.<\/p>\n\n\n\n<p>The left join is also known as the left outer join. The outer keyword is optional.<\/p>\n\n\n\n<p>The following statement joins the <code>candidates<\/code> table with the <code>employees<\/code> table using left join:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n\tc.id candidate_id,\n\tc.fullname candidate_name,\n\te.id employee_id,\n\te.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n\thr.candidates c\n\t<span class=\"hljs-keyword\">LEFT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n\t\t<span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"96\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join.png\" alt=\"SQL Server Joins - left Join\" class=\"wp-image-1072\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join.png 338w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join-300x85.png 300w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><\/figure>\n\n\n\n<p>The following Venn diagram illustrates the result of the left join of two result sets:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"262\" height=\"158\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Left-Join-diagram.png\" alt=\"\" class=\"wp-image-2187\"\/><\/figure>\n\n\n\n<p>To get the rows that are available only in the left table but not in the right table, you add a <code>WHERE<\/code> clause to the above query:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">LEFT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname\n<span class=\"hljs-keyword\">WHERE<\/span> \n    e.id <span class=\"hljs-keyword\">IS<\/span> <span class=\"hljs-literal\">NULL<\/span>;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following picture shows the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"58\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join-with-a-where-clause.png\" alt=\"SQL Server Joins - left Join with a where clause\" class=\"wp-image-1073\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join-with-a-where-clause.png 341w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-left-Join-with-a-where-clause-300x51.png 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/figure>\n\n\n\n<p>The following Venn diagram illustrates the result of the left join that selects rows available only in the left table:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"156\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Left-Join-with-only-rows-in-the-left-table.png\" alt=\"SQL Server Joins - Left Join with only rows in the left table\" class=\"wp-image-1116\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-right-join'>SQL Server Right Join <a href=\"#sql-server-right-join\" class=\"anchor\" id=\"sql-server-right-join\" title=\"Anchor for SQL Server Right Join\">#<\/a><\/h2>\n\n\n\n<p>The <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-right-join\/\">right join<\/a> or <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-right-join\/\">right outer join<\/a> selects data starting from the right table. It is a reversed version of the <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-left-join\/\">left join<\/a>.<\/p>\n\n\n\n<p>The right join returns a result set that contains all rows from the right table and the matching rows in the left table. If a row in the right table does not have a matching row in the left table, all columns in the left table will contain nulls.<\/p>\n\n\n\n<p>The following example uses the right join to query rows from <code>candidates<\/code> and <code>employees<\/code> tables:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">RIGHT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"97\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join.png\" alt=\"SQL Server Joins - right Join\" class=\"wp-image-1074\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join.png 342w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join-300x85.png 300w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n\n\n\n<p>Notice that all rows from the right table (<code>employees<\/code>) are included in the result set.<\/p>\n\n\n\n<p>The Venn diagram illustrates the right join of two result sets:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"252\" height=\"160\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Right-Join-Diagram.png\" alt=\"\" class=\"wp-image-2188\"\/><\/figure>\n\n\n\n<p>Similarly, you can get rows that are available only in the right table by adding a <code><a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-where\/\">WHERE<\/a><\/code> clause to the above query as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">RIGHT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname\n<span class=\"hljs-keyword\">WHERE<\/span>\n    c.id <span class=\"hljs-keyword\">IS<\/span> <span class=\"hljs-literal\">NULL<\/span>;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"339\" height=\"57\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join-with-a-where-clause.png\" alt=\"SQL Server Joins - right Join with a where clause\" class=\"wp-image-1075\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join-with-a-where-clause.png 339w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-right-Join-with-a-where-clause-300x50.png 300w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/figure>\n\n\n\n<p>And the Venn diagram that illustrates the operation:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"255\" height=\"156\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-RightJoin-with-only-rows-in-the-right-table.png\" alt=\"SQL Server Joins - Right Join with only rows in the right table\" class=\"wp-image-1119\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id='sql-server-full-join'>SQL Server full join <a href=\"#sql-server-full-join\" class=\"anchor\" id=\"sql-server-full-join\" title=\"Anchor for SQL Server full join\">#<\/a><\/h2>\n\n\n\n<p>The <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-full-outer-join\/\">full outer join<\/a> or <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-full-outer-join\/\">full join<\/a> returns a result set that contains all rows from both left and right tables, with the matching rows from both sides where available. In case there is no match, the missing side will have <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-null\/\">NULL<\/a> values.<\/p>\n\n\n\n<p>The following example shows how to perform a full join between the <code>candidates<\/code> and <code>employees<\/code> tables:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">FULL<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"344\" height=\"134\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join.png\" alt=\"SQL Server Joins - full Join\" class=\"wp-image-1076\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join.png 344w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join-300x117.png 300w\" sizes=\"auto, (max-width: 344px) 100vw, 344px\" \/><\/figure>\n\n\n\n<p>The Venn diagram that illustrates the full outer join:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"266\" height=\"154\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-outer-Join.png\" alt=\"SQL Server Joins - full outer Join\" class=\"wp-image-1121\"\/><\/figure>\n\n\n\n<p>To select rows that exist in either the left or right table, you exclude rows that are common to both tables by adding a <a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-where\/\"><code>WHERE<\/code><\/a> clause as shown in the following query:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>  \n    c.id candidate_id,\n    c.fullname candidate_name,\n    e.id employee_id,\n    e.fullname employee_name\n<span class=\"hljs-keyword\">FROM<\/span> \n    hr.candidates c\n    <span class=\"hljs-keyword\">FULL<\/span> <span class=\"hljs-keyword\">JOIN<\/span> hr.employees e \n        <span class=\"hljs-keyword\">ON<\/span> e.fullname = c.fullname\n<span class=\"hljs-keyword\">WHERE<\/span>\n    c.id <span class=\"hljs-keyword\">IS<\/span> <span class=\"hljs-literal\">NULL<\/span> <span class=\"hljs-keyword\">OR<\/span>\n    e.id <span class=\"hljs-keyword\">IS<\/span> <span class=\"hljs-literal\">NULL<\/span>;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here is the output:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"97\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join-with-a-where-clause.png\" alt=\"SQL Server Joins - full Join with a where clause\" class=\"wp-image-1077\" srcset=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join-with-a-where-clause.png 341w, https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-Join-with-a-where-clause-300x85.png 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/figure>\n\n\n\n<p>The Venn diagram illustrates the above operation:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"259\" height=\"155\" src=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-full-outer-Join-with-rows-unique-to-both-tables.png\" alt=\"SQL Server Joins - full outer Join with rows unique to both tables\" class=\"wp-image-1120\"\/><\/figure>\n\n\n\n<p>In this tutorial, you have learned various SQL Server joins that combine data from two tables.<\/p>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"1070\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/\"\n\t\t\t\tdata-post-title=\"SQL Server Joins\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"1070\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/\"\n\t\t\t\tdata-post-title=\"SQL Server Joins\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":100,"menu_order":13,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1070","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Visualization Explanation Of Joins in SQL Server<\/title>\n<meta name=\"description\" content=\"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Visualization Explanation Of Joins in SQL Server\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/\" \/>\n<meta property=\"og:site_name\" content=\"SQL Server Tutorial\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-02T09:02:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/\",\"url\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/\",\"name\":\"A Visualization Explanation Of Joins in SQL Server\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/wp-content\\\/uploads\\\/SQL-Server-Joins-Inner-Join.png\",\"datePublished\":\"2019-02-10T11:16:31+00:00\",\"dateModified\":\"2024-03-02T09:02:53+00:00\",\"description\":\"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/wp-content\\\/uploads\\\/SQL-Server-Joins-Inner-Join.png\",\"contentUrl\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/wp-content\\\/uploads\\\/SQL-Server-Joins-Inner-Join.png\",\"width\":340,\"height\":54,\"caption\":\"SQL Server Joins - Inner Join\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/sql-server-joins\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server Basics\",\"item\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/sql-server-basics\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SQL Server Joins\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/\",\"name\":\"SQL Server Tutorial\",\"description\":\"The Practical SQL Server Tutorial\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlservertutorial.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Visualization Explanation Of Joins in SQL Server","description":"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/","og_locale":"en_US","og_type":"article","og_title":"A Visualization Explanation Of Joins in SQL Server","og_description":"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.","og_url":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/","og_site_name":"SQL Server Tutorial","article_modified_time":"2024-03-02T09:02:53+00:00","og_image":[{"url":"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/","url":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/","name":"A Visualization Explanation Of Joins in SQL Server","isPartOf":{"@id":"https:\/\/www.sqlservertutorial.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png","datePublished":"2019-02-10T11:16:31+00:00","dateModified":"2024-03-02T09:02:53+00:00","description":"In this tutorial, you will learn about various kinds of SQL Server joins that allow you to combine data from two or more tables.","breadcrumb":{"@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/#primaryimage","url":"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png","contentUrl":"https:\/\/www.sqlservertutorial.net\/wp-content\/uploads\/SQL-Server-Joins-Inner-Join.png","width":340,"height":54,"caption":"SQL Server Joins - Inner Join"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-joins\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlservertutorial.net\/"},{"@type":"ListItem","position":2,"name":"SQL Server Basics","item":"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/"},{"@type":"ListItem","position":3,"name":"SQL Server Joins"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlservertutorial.net\/#website","url":"https:\/\/www.sqlservertutorial.net\/","name":"SQL Server Tutorial","description":"The Practical SQL Server Tutorial","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlservertutorial.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/1070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/comments?post=1070"}],"version-history":[{"count":4,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/1070\/revisions"}],"predecessor-version":[{"id":3413,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/1070\/revisions\/3413"}],"up":[{"embeddable":true,"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/pages\/100"}],"wp:attachment":[{"href":"https:\/\/www.sqlservertutorial.net\/wp-json\/wp\/v2\/media?parent=1070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}