forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
86 lines
21 KiB
HTML
86 lines
21 KiB
HTML
<a name="EN-US_TOPIC_0000001809359976"></a><a name="EN-US_TOPIC_0000001809359976"></a>
|
|
|
|
<h1 class="topictitle1">SELECT</h1>
|
|
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_sc38eadebc8e74e1e8200bca116ca55ef"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p19380122743316">Read data from an HStore table.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_s382c620cdede4a91ba5d429f091c14c9"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_u83811bebe7004526bcd5b0d5cb5278d2"><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_li82795203327">Currently, neither column-store tables and HStore tables support the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b152911328131818">SELECT FOR UPDATE</strong> syntax.</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_li12910825171914">When a SELECT query is performed on an HStore table, the system will scan the data in column-store primary table CUs, the delta table, and the update information in each row in the memory. The three types of information will be combined before returned.</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_li19366125133115">If data is queried based on the primary key index or unique index,<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p16463134133110"><a name="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_li19366125133115"></a><a name="en-us_topic_0000001492398245_li19366125133115"></a>For traditional column-store tables, the unique index stores both the data location information (blocknum, offset) of the row-store Delta table and the data location information (cuid, offset) of the column-store primary table. After the data is merged to the primary table, a new index tuple will be inserted, and the index will keep bloating.</p>
|
|
<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p1643327143111">For HStore tables, global CUIDs are allocated in a unified manner. Therefore, only cuid and offset are stored in index tuples. After data is merged, no new index tuples will be generated.</p>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_s63e68d20fc8a4670b54b531fc5722bb9"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_s60d8dda324084db98740133562841b8c"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><span class="p">[</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">RECURSIVE</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">with_query</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="cm">/*+ plan_hint */</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">expression</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="n">expression</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">output_name</span><span class="w"> </span><span class="p">]</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="err">}</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">from_item</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">condition</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">grouping_element</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="n">condition</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">UNION</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INTERSECT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">EXCEPT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">MINUS</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="err">{</span><span class="n">expression</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ASC</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DESC</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="k">operator</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">nlssort_expression_clause</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">NULLS</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">FIRST</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">LAST</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span>
|
|
<span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">count</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">OFFSET</span><span class="w"> </span><span class="k">start</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ROW</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="k">start</span><span class="p">,</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">count</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_s0568dfe900e948eaa67d0a335c26701c"><h4 class="sectiontitle">Parameters</h4><ul id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_ul17985541193518"><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_l43ddfc3d9a0d4f9398fea88436b376ad"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_ae08bf8ed7a1441ae9c46a40dabb09efa">DISTINCT [ ON ( expression [, ...] ) ]</strong><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a0bf97a5e5b5646ecb6e69997867c0ec9">Removes all duplicate rows from the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b56300343221">SELECT</strong> result set.</p>
|
|
<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a02d339bc997f49b6993656fbaecea9d2"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b1712510268269">ON ( expression [, ...] )</strong> is only reserved for the first row among all the rows with the same result calculated using given expressions.</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_lee69b1e6e28f40e8939038167a36e5ef"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_abbe6ef423c86463990bf58a12c947bad">SELECT list</strong><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a60e7fa93af3e41bf9ce523eb67ad2523">Indicates columns to be queried. Some or all columns (using wildcard character *) can be queried.</p>
|
|
<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a9fdfc50f867044f4a67c65cfc76ac92b">You may use the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b11806696012638">AS output_name</strong> clause to give an alias for an output column. The alias is used for the displaying of the output column.</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_l607b711a9931490793bf7b816997d3f1"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a34feaf90f0d14bc9aef6c95ff0966a01">FROM</strong> clause<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_afa732663df46477aac8655ce9e22ec24">Indicates one or more source tables for <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b122998715512638">SELECT</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_ab9fecc1f1c7d43cf810ebe9f620f4ef5">The <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b88225947912638">FROM</strong> clause can contain the following elements:</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_l5ed04461b9cc46e2b13af8b5fe03163d"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a1df736a4d5e64464aac2457ae0ab60a6">WHERE clause</strong><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a498e069f7dab465c92a49a0bf8f3b97e">The <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b56561897412638">WHERE</strong> clause forms an expression for row selection to narrow down the query range of <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b202470115712638">SELECT</strong>. The condition is any expression that evaluates to a result of Boolean type. Rows that do not satisfy this condition will be eliminated from the output.</p>
|
|
<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p451911248217">In the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b58762580012638">WHERE</strong> clause, you can use the operator (+) to convert a table join to an outer join. However, this method is not recommended because it is not the standard SQL syntax and may raise syntax compatibility issues during platform migration. There are many restrictions on using the operator (+):</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_lc201eba7112e4143be75887a2428c2df"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a0c8ecebd2cf041bba26407c92d50996a">GROUP BY clause</strong><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_af081e98783fa4cfd80bb7b1c5436eca0">Condenses query results into a single row all selected rows that share the same values for the grouped expressions.</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_l9e92a079e696408fba467918a3f7f69e"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_acbca056e47194f148b2199794dce88a8">HAVING clause</strong><p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a4ae31529bb8341eaa4e4a1efc0881ac4">Selects special groups by working with the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b22280101912638">GROUP BY</strong> clause. The <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b167615160712638">HAVING</strong> clause compares some attributes of groups with a constant. Only groups that matching the logical expression in the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b30810161512638">HAVING</strong> clause are extracted.</p>
|
|
</li><li id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_lbf7f3b7f0583465b9d202a68547bad43"><strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a246da8cf2ee14dfd8f848a97321fde00">ORDER BY</strong> clause<p id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_a9200c4be10ac4662950f16ce06a338c1">Sorts data retrieved by <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b10490821512638">SELECT</strong> in descending or ascending order. If the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b17700767212638">ORDER BY</strong> expression contains multiple columns:</p>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_sc62f0ffeacde4228a7e8c56b5a2b85f1"><h4 class="sectiontitle">Example</h4><div class="p" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p3913174092613">Create the <strong id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_b1421515344277">reason_select</strong> table and insert data into the table.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_screen181417518382"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span>
|
|
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">reason_select</span>
|
|
<span class="p">(</span>
|
|
<span class="w"> </span><span class="n">r_reason_sk</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">r_reason_id</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">r_reason_desc</span><span class="w"> </span><span class="nb">character</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
|
|
<span class="p">)</span><span class="k">WITH</span><span class="p">(</span><span class="n">ORIENTATION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">COLUMN</span><span class="p">,</span><span class="w"> </span><span class="n">ENABLE_HSTORE</span><span class="o">=</span><span class="k">ON</span><span class="p">);</span>
|
|
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">reason_select</span><span class="w"> </span><span class="k">values</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="s1">'reason 1'</span><span class="p">),(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="s1">'reason 2'</span><span class="p">),(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="s1">'reason 3'</span><span class="p">),(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="s1">'reason 4'</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="p" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p1620816521290">Perform the GROUP BY operation.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_screen82082521492"><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">SELECT</span><span class="w"> </span><span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">),</span><span class="w"> </span><span class="n">r_reason_sk</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">reason_select</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">r_reason_sk</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="p" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p11411638161010">Perform the HAVING filtering operation.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_screen64203818106"><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">SELECT</span><span class="w"> </span><span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">c</span><span class="p">,</span><span class="n">r_reason_sk</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">reason_select</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">r_reason_sk</span><span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="p" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_p183192910111">Perform the ORDER BY operation.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001809359976__en-us_topic_0000001492398245_screen18342912112"><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">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">reason_select</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">r_reason_sk</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_1026.html">Hybrid Data Warehouse Syntax</a></div>
|
|
</div>
|
|
</div>
|
|
|