doc-exports/docs/dli/sqlreference/dli_08_0186.html
Su, Xiaomeng 04d4597cf3 dli_sqlreference_0511_version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
Co-committed-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
2023-11-02 14:34:08 +00:00

28 lines
4.4 KiB
HTML

<a name="dli_08_0186"></a><a name="dli_08_0186"></a>
<h1 class="topictitle1">WITH...AS</h1>
<div id="body8662426"><div class="section" id="dli_08_0186__en-us_topic_0093946818_s2d372324e99c423b8f7f0274d42fbe1a"><h4 class="sectiontitle">Function</h4><p id="dli_08_0186__en-us_topic_0093946818_a5b530c02f69645a98a4c590825ad8a73">This statement is used to define the common table expression (CTE) using WITH...AS to simplify the query and make the result easier to read and maintain. </p>
</div>
<div class="section" id="dli_08_0186__en-us_topic_0093946818_s8b6523b266364106aa72de6662d123d3"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="dli_08_0186__screen1526416111469"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">WITH</span><span class="w"> </span><span class="n">cte_name</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span><span class="n">select_statement</span><span class="p">)</span><span class="w"> </span><span class="n">sql_containing_cte_name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0186__en-us_topic_0093946818_s50777ac201e14da48004c1c943743967"><h4 class="sectiontitle">Keyword</h4><ul id="dli_08_0186__en-us_topic_0093946818_u01eeabf1030e4e599c19f1b11fb4922b"><li id="dli_08_0186__en-us_topic_0093946818_la58d27099bd64234858f3949bae3e17c">cte_name: Name of a public expression. The name must be unique.</li><li id="dli_08_0186__en-us_topic_0093946818_l6e2e85e3235f42bab6dc8b4165d145fe">select_statement: complete SELECT clause.</li><li id="dli_08_0186__en-us_topic_0093946818_lbc1f5e782d63410fb5d25ada30d3313c">sql_containing_cte_name: SQL statement containing the defined common expression.</li></ul>
</div>
<div class="section" id="dli_08_0186__en-us_topic_0093946818_sfe60f382a70b4665abdd0e8ad2c3258e"><h4 class="sectiontitle">Precautions</h4><ul id="dli_08_0186__en-us_topic_0093946818_u5033fe9ea247490f95df48b58fb05878"><li id="dli_08_0186__en-us_topic_0093946818_l62e6e1c3bbba4c69bd9998674b90c861">A CTE must be used immediately after it is defined. Otherwise, the definition becomes invalid.</li><li id="dli_08_0186__en-us_topic_0093946818_l6e414f25af5a4a1d872c574cd3f31882">Multiple CTEs can be defined by WITH at a time. The CTEs are separated by commas and the CTEs defined later can quote the CTEs defined earlier. </li></ul>
</div>
<div class="section" id="dli_08_0186__en-us_topic_0093946818_s1ae5bca01ed44ccfb42fff72023b1e86"><h4 class="sectiontitle">Example</h4><p id="dli_08_0186__en-us_topic_0093946818_a8415d1213d1445e783f649537cceb6cd">Define <strong id="dli_08_0186__b6823210308">SELECT courseId FROM course_info WHERE courseName = 'Biology'</strong> as CTE <strong id="dli_08_0186__b1915329308">nv</strong> and use <strong id="dli_08_0186__b49193213303">nv</strong> as the SELECT statement in future queries.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0186__screen2042351534611"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">WITH</span><span class="w"> </span><span class="n">nv</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="n">courseId</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">course_info</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">courseName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Biology'</span><span class="p">)</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">courseId</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">nv</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0221.html">Spark SQL Syntax Reference</a></div>
</div>
</div>