This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/asf-site by this push: new 23da388cec Publish built docs triggered by 3a371ed6ef38ba49c036d0b13174e0007455bed0 23da388cec is described below commit 23da388cec97eca50424a4ab779123873885a00f Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com> AuthorDate: Thu Jun 12 22:17:45 2025 +0000 Publish built docs triggered by 3a371ed6ef38ba49c036d0b13174e0007455bed0 --- _sources/user-guide/sql/select.md.txt | 74 ++++++++++++++++++++++++---- searchindex.js | 2 +- user-guide/sql/select.html | 90 +++++++++++++++++++++++++++++++---- 3 files changed, 145 insertions(+), 21 deletions(-) diff --git a/_sources/user-guide/sql/select.md.txt b/_sources/user-guide/sql/select.md.txt index b2fa0a6305..84aac431a6 100644 --- a/_sources/user-guide/sql/select.md.txt +++ b/_sources/user-guide/sql/select.md.txt @@ -84,7 +84,7 @@ SELECT a FROM table WHERE a > 10 ## JOIN clause -DataFusion supports `INNER JOIN`, `LEFT OUTER JOIN`, `RIGHT OUTER JOIN`, `FULL OUTER JOIN`, `NATURAL JOIN` and `CROSS JOIN`. +DataFusion supports `INNER JOIN`, `LEFT OUTER JOIN`, `RIGHT OUTER JOIN`, `FULL OUTER JOIN`, `NATURAL JOIN`, `CROSS JOIN`, `LEFT SEMI JOIN`, `RIGHT SEMI JOIN`, `LEFT ANTI JOIN`, and `RIGHT ANTI JOIN`. The following examples are based on this table: @@ -102,7 +102,7 @@ select * from x; The keywords `JOIN` or `INNER JOIN` define a join that only shows rows where there is a match in both tables. ```sql -select * from x inner join x y ON x.column_1 = y.column_1; +SELECT * FROM x INNER JOIN x y ON x.column_1 = y.column_1; +----------+----------+----------+----------+ | column_1 | column_2 | column_1 | column_2 | +----------+----------+----------+----------+ @@ -116,7 +116,7 @@ The keywords `LEFT JOIN` or `LEFT OUTER JOIN` define a join that includes all ro is not a match in the right table. When there is no match, null values are produced for the right side of the join. ```sql -select * from x left join x y ON x.column_1 = y.column_2; +SELECT * FROM x LEFT JOIN x y ON x.column_1 = y.column_2; +----------+----------+----------+----------+ | column_1 | column_2 | column_1 | column_2 | +----------+----------+----------+----------+ @@ -130,7 +130,7 @@ The keywords `RIGHT JOIN` or `RIGHT OUTER JOIN` define a join that includes all is not a match in the left table. When there is no match, null values are produced for the left side of the join. ```sql -select * from x right join x y ON x.column_1 = y.column_2; +SELECT * FROM x RIGHT JOIN x y ON x.column_1 = y.column_2; +----------+----------+----------+----------+ | column_1 | column_2 | column_1 | column_2 | +----------+----------+----------+----------+ @@ -145,7 +145,7 @@ The keywords `FULL JOIN` or `FULL OUTER JOIN` define a join that is effectively either side of the join where there is not a match. ```sql -select * from x full outer join x y ON x.column_1 = y.column_2; +SELECT * FROM x FULL OUTER JOIN x y ON x.column_1 = y.column_2; +----------+----------+----------+----------+ | column_1 | column_2 | column_1 | column_2 | +----------+----------+----------+----------+ @@ -156,11 +156,11 @@ select * from x full outer join x y ON x.column_1 = y.column_2; ### NATURAL JOIN -A natural join defines an inner join based on common column names found between the input tables. When no common -column names are found, it behaves like a cross join. +A `NATURAL JOIN` defines an inner join based on common column names found between the input tables. When no common +column names are found, it behaves like a `CROSS JOIN`. ```sql -select * from x natural join x y; +SELECT * FROM x NATURAL JOIN x y; +----------+----------+ | column_1 | column_2 | +----------+----------+ @@ -170,11 +170,11 @@ select * from x natural join x y; ### CROSS JOIN -A cross join produces a cartesian product that matches every row in the left side of the join with every row in the +A `CROSS JOIN` produces a cartesian product that matches every row in the left side of the join with every row in the right side of the join. ```sql -select * from x cross join x y; +SELECT * FROM x CROSS JOIN x y; +----------+----------+----------+----------+ | column_1 | column_2 | column_1 | column_2 | +----------+----------+----------+----------+ @@ -182,6 +182,60 @@ select * from x cross join x y; +----------+----------+----------+----------+ ``` +### LEFT SEMI JOIN + +The `LEFT SEMI JOIN` returns all rows from the left table that have at least one matching row in the right table, and +projects only the columns from the left table. + +```sql +SELECT * FROM x LEFT SEMI JOIN x y ON x.column_1 = y.column_1; ++----------+----------+ +| column_1 | column_2 | ++----------+----------+ +| 1 | 2 | ++----------+----------+ +``` + +### RIGHT SEMI JOIN + +The `RIGHT SEMI JOIN` returns all rows from the right table that have at least one matching row in the left table, and +only projects the columns from the right table. + +```sql +SELECT * FROM x RIGHT SEMI JOIN x y ON x.column_1 = y.column_1; ++----------+----------+ +| column_1 | column_2 | ++----------+----------+ +| 1 | 2 | ++----------+----------+ +``` + +### LEFT ANTI JOIN + +The `LEFT ANTI JOIN` returns all rows from the left table that do not have any matching row in the right table, projecting +only the left table’s columns. + +```sql +SELECT * FROM x LEFT ANTI JOIN x y ON x.column_1 = y.column_1; ++----------+----------+ +| column_1 | column_2 | ++----------+----------+ ++----------+----------+ +``` + +### RIGHT ANTI JOIN + +The `RIGHT ANTI JOIN` returns all rows from the right table that do not have any matching row in the left table, projecting +only the right table’s columns. + +```sql +SELECT * FROM x RIGHT ANTI JOIN x y ON x.column_1 = y.column_1; ++----------+----------+ +| column_1 | column_2 | ++----------+----------+ ++----------+----------+ +``` + ## GROUP BY clause Example: diff --git a/searchindex.js b/searchindex.js index 358941a6b3..ebc06f7ceb 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"!=":[[55,"op-neq"]],"!~":[[55,"op-re-not-match"]],"!~*":[[55,"op-re-not-match-i"]],"!~~":[[55,"id19"]],"!~~*":[[55,"id20"]],"#":[[55,"op-bit-xor"]],"%":[[55,"op-modulo"]],"&":[[55,"op-bit-and"]],"(relation, name) tuples in logical fields and logical columns are unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[55,"op-multiply"]],"+":[[55,"op-plus"]],"-":[[55,"op-minus"]],"/":[[55,"op-divide"]],"2022 Q2":[[10,"q2"]] [...] \ No newline at end of file +Search.setIndex({"alltitles":{"!=":[[55,"op-neq"]],"!~":[[55,"op-re-not-match"]],"!~*":[[55,"op-re-not-match-i"]],"!~~":[[55,"id19"]],"!~~*":[[55,"id20"]],"#":[[55,"op-bit-xor"]],"%":[[55,"op-modulo"]],"&":[[55,"op-bit-and"]],"(relation, name) tuples in logical fields and logical columns are unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[55,"op-multiply"]],"+":[[55,"op-plus"]],"-":[[55,"op-minus"]],"/":[[55,"op-divide"]],"2022 Q2":[[10,"q2"]] [...] \ No newline at end of file diff --git a/user-guide/sql/select.html b/user-guide/sql/select.html index 89f03c502f..6a118e35fa 100644 --- a/user-guide/sql/select.html +++ b/user-guide/sql/select.html @@ -587,6 +587,26 @@ CROSS JOIN </a> </li> + <li class="toc-h3 nav-item toc-entry"> + <a class="reference internal nav-link" href="#left-semi-join"> + LEFT SEMI JOIN + </a> + </li> + <li class="toc-h3 nav-item toc-entry"> + <a class="reference internal nav-link" href="#right-semi-join"> + RIGHT SEMI JOIN + </a> + </li> + <li class="toc-h3 nav-item toc-entry"> + <a class="reference internal nav-link" href="#left-anti-join"> + LEFT ANTI JOIN + </a> + </li> + <li class="toc-h3 nav-item toc-entry"> + <a class="reference internal nav-link" href="#right-anti-join"> + RIGHT ANTI JOIN + </a> + </li> </ul> </li> <li class="toc-h2 nav-item toc-entry"> @@ -722,7 +742,7 @@ By default <code class="docutils literal notranslate"><span class="pre">ALL</spa </section> <section id="join-clause"> <h2>JOIN clause<a class="headerlink" href="#join-clause" title="Link to this heading">¶</a></h2> -<p>DataFusion supports <code class="docutils literal notranslate"><span class="pre">INNER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">FULL</span> [...] +<p>DataFusion supports <code class="docutils literal notranslate"><span class="pre">INNER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code>, <code class="docutils literal notranslate"><span class="pre">FULL</span> [...] <p>The following examples are based on this table:</p> <div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="o">+</span><span class="c1">----------+----------+</span> @@ -735,7 +755,7 @@ By default <code class="docutils literal notranslate"><span class="pre">ALL</spa <section id="inner-join"> <h3>INNER JOIN<a class="headerlink" href="#inner-join" title="Link to this heading">¶</a></h3> <p>The keywords <code class="docutils literal notranslate"><span class="pre">JOIN</span></code> or <code class="docutils literal notranslate"><span class="pre">INNER</span> <span class="pre">JOIN</span></code> define a join that only shows rows where there is a match in both tables.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">inner</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class=" [...] +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">INNER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class=" [...] <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> @@ -748,7 +768,7 @@ By default <code class="docutils literal notranslate"><span class="pre">ALL</spa <h3>LEFT OUTER JOIN<a class="headerlink" href="#left-outer-join" title="Link to this heading">¶</a></h3> <p>The keywords <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">JOIN</span></code> or <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code> define a join that includes all rows from the left table even if there is not a match in the right table. When there is no match, null values are produced for the right side of the join.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">left</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="k [...] +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">LEFT</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="k [...] <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> @@ -761,7 +781,7 @@ is not a match in the right table. When there is no match, null values are produ <h3>RIGHT OUTER JOIN<a class="headerlink" href="#right-outer-join" title="Link to this heading">¶</a></h3> <p>The keywords <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">JOIN</span></code> or <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code> define a join that includes all rows from the right table even if there is not a match in the left table. When there is no match, null values are produced for the left side of the join.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">right</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class=" [...] +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">RIGHT</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class=" [...] <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> @@ -775,7 +795,7 @@ is not a match in the left table. When there is no match, null values are produc <p>The keywords <code class="docutils literal notranslate"><span class="pre">FULL</span> <span class="pre">JOIN</span></code> or <code class="docutils literal notranslate"><span class="pre">FULL</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code> define a join that is effectively a union of a <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code> and <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">OUTER</span> <span class="pre">JOIN</span></code>. It will show all rows from the left and right side of the join and will produce null values on either side of the join where there is not a match.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">full</span><span class="w"> </span><span class="k">outer</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span clas [...] +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">FULL</span><span class="w"> </span><span class="k">OUTER</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span clas [...] <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> @@ -787,9 +807,9 @@ either side of the join where there is not a match.</p> </section> <section id="natural-join"> <h3>NATURAL JOIN<a class="headerlink" href="#natural-join" title="Link to this heading">¶</a></h3> -<p>A natural join defines an inner join based on common column names found between the input tables. When no common -column names are found, it behaves like a cross join.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">natural</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> +<p>A <code class="docutils literal notranslate"><span class="pre">NATURAL</span> <span class="pre">JOIN</span></code> defines an inner join based on common column names found between the input tables. When no common +column names are found, it behaves like a <code class="docutils literal notranslate"><span class="pre">CROSS</span> <span class="pre">JOIN</span></code>.</p> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">NATURAL</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> <span class="o">+</span><span class="c1">----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+</span> @@ -800,9 +820,9 @@ column names are found, it behaves like a cross join.</p> </section> <section id="cross-join"> <h3>CROSS JOIN<a class="headerlink" href="#cross-join" title="Link to this heading">¶</a></h3> -<p>A cross join produces a cartesian product that matches every row in the left side of the join with every row in the +<p>A <code class="docutils literal notranslate"><span class="pre">CROSS</span> <span class="pre">JOIN</span></code> produces a cartesian product that matches every row in the left side of the join with every row in the right side of the join.</p> -<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">cross</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">CROSS</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> <span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> <span class="o">+</span><span class="c1">----------+----------+----------+----------+</span> @@ -811,6 +831,56 @@ right side of the join.</p> </pre></div> </div> </section> +<section id="left-semi-join"> +<h3>LEFT SEMI JOIN<a class="headerlink" href="#left-semi-join" title="Link to this heading">¶</a></h3> +<p>The <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">SEMI</span> <span class="pre">JOIN</span></code> returns all rows from the left table that have at least one matching row in the right table, and +projects only the columns from the left table.</p> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">LEFT</span><span class="w"> </span><span class="n">SEMI</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class [...] +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +</pre></div> +</div> +</section> +<section id="right-semi-join"> +<h3>RIGHT SEMI JOIN<a class="headerlink" href="#right-semi-join" title="Link to this heading">¶</a></h3> +<p>The <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">SEMI</span> <span class="pre">JOIN</span></code> returns all rows from the right table that have at least one matching row in the left table, and +only projects the columns from the right table.</p> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">RIGHT</span><span class="w"> </span><span class="n">SEMI</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span clas [...] +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +</pre></div> +</div> +</section> +<section id="left-anti-join"> +<h3>LEFT ANTI JOIN<a class="headerlink" href="#left-anti-join" title="Link to this heading">¶</a></h3> +<p>The <code class="docutils literal notranslate"><span class="pre">LEFT</span> <span class="pre">ANTI</span> <span class="pre">JOIN</span></code> returns all rows from the left table that do not have any matching row in the right table, projecting +only the left table’s columns.</p> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">LEFT</span><span class="w"> </span><span class="n">ANTI</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class [...] +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +</pre></div> +</div> +</section> +<section id="right-anti-join"> +<h3>RIGHT ANTI JOIN<a class="headerlink" href="#right-anti-join" title="Link to this heading">¶</a></h3> +<p>The <code class="docutils literal notranslate"><span class="pre">RIGHT</span> <span class="pre">ANTI</span> <span class="pre">JOIN</span></code> returns all rows from the right table that do not have any matching row in the left table, projecting +only the right table’s columns.</p> +<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="k">RIGHT</span><span class="w"> </span><span class="n">ANTI</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span clas [...] +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">|</span><span class="w"> </span><span class="n">column_1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">column_2</span><span class="w"> </span><span class="o">|</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +<span class="o">+</span><span class="c1">----------+----------+</span> +</pre></div> +</div> +</section> </section> <section id="group-by-clause"> <h2>GROUP BY clause<a class="headerlink" href="#group-by-clause" title="Link to this heading">¶</a></h2> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org For additional commands, e-mail: commits-h...@datafusion.apache.org