程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL Limit order by,mysqllimit

MySQL Limit order by,mysqllimit

編輯:MySQL綜合教程

MySQL Limit order by,mysqllimit


今天寫模糊查詢的時候,按照時間排序並進行分頁時,在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 DESC
13         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的工作機制相關。根據以上的例子顯然只能先排序後做選擇性獲取結果。若博友能貼出官方文檔解釋,十分感謝~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved