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

Reply via email to