MySQL Limit order by

來源:互聯網
上載者:User

標籤:

今天寫模糊查詢的時候,按照時間排序並進行分頁時,在mybatis的對應檔中有這樣一條sql語句

 1 SELECT 2         <include refid="Base_Column_List"/> 3         FROM USER U 4         WHERE U.status != #{status,jdbcType=VARCHAR} 5         <if test="keyword != null and keyword != ‘‘"> 6             AND 7             ( 8             U.NAME LIKE #{keyword,jdbcType=VARCHAR} 9             OR U.USERNAME LIKE #{keyword,jdbcType=VARCHAR}10             )11         </if>12         ORDER BY U.lastupdateddate DESC13         LIMIT #{offsetNum},#{pageSize}

如果先排序後分頁的話就能得到想要的結果,但是反之

SELECT        <include refid="Base_Column_List"/>        FROM USER U        WHERE U.status != #{status,jdbcType=VARCHAR}        <if test="keyword != null and keyword != ‘‘">            AND            (            U.NAME LIKE #{keyword,jdbcType=VARCHAR}            OR U.USERNAME LIKE #{keyword,jdbcType=VARCHAR}            )        </if>        LIMIT #{offsetNum},#{pageSize}        ORDER BY U.lastupdateddate DESC

這樣的話就會報錯。SQL的執行順序是from where select。那我可不可以認為,在相同優先順序的where條件下誰在前面誰會優先執行,而order是對查詢結果的排序,而limit則是對查詢結果的選擇性擷取;如果limit在前的話比較好的結果是對選擇性擷取之後的

結果再進行排序,能不能得到這樣的結果應該和order by的工作機制相關。根據以上的例子顯然只能先排序後做選擇性擷取結果。若博友能貼出官方文檔解釋,十分感謝~

MySQL Limit order by

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.