贵昌 發表於 2023-9-7 00:00:00

SQL中Having与Where的区别

<p>
        含义</p>
<p>
        <strong>where</strong></p>
<p>
        在分组之前就进行选择操作</p>
<p>
        <strong>having</strong></p>
<p>
        having在分组操作之后才进行选择操作,所以having可以选择聚合函数<br>
        eg:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_158123">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">// 下面这句是可以的</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql keyword">SELECT</code> <code class="sql color2">COUNT</code><code class="sql plain">(*) </code><code class="sql keyword">FROM</code> <code class="sql plain">A</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql keyword">WHERE</code> <code class="sql plain">A.a1&gt;0</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql keyword">GROUP</code> <code class="sql keyword">BY</code> <code class="sql plain">a2;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_961059">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">//但是下面就不行</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql keyword">SELECT</code> <code class="sql color2">COUNT</code><code class="sql plain">(*) </code><code class="sql keyword">FROM</code> <code class="sql plain">A</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql keyword">WHERE</code> <code class="sql plain">A.a1&gt;0 </code><code class="sql color1">and</code> <code class="sql color2">count</code><code class="sql plain">(*)&gt;1</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql keyword">GROUP</code> <code class="sql keyword">BY</code> <code class="sql plain">a2;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_121695">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">//必须要改为</code><code class="sql keyword">having</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql keyword">SELECT</code> <code class="sql color2">COUNT</code><code class="sql plain">(*) </code><code class="sql keyword">FROM</code> <code class="sql plain">A</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql keyword">WHERE</code> <code class="sql plain">A.a1&gt;0</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql keyword">GROUP</code> <code class="sql keyword">BY</code> <code class="sql plain">a2</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql keyword">HAVING</code> <code class="sql color2">COUNT</code><code class="sql plain">(*)&gt;1</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
頁: [1]
查看完整版本: SQL中Having与Where的区别