首页 > 数据库技术 > 详细

MySQL Limit order by

时间:2016-07-14 23:50:38      阅读:364      评论:0      收藏:0      [点我收藏+]

今天写模糊查询的时候,按照时间排序并进行分页时,在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的工作机制相关。根据以上的例子显然只能先排序后做选择性获取结果。若博友能贴出官方文档解释,十分感谢~

MySQL Limit order by

原文:http://www.cnblogs.com/Sai-Rita/p/5671779.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!