码迷,mamicode.com
首页 > 数据库 > 详细

mysql里面 limit的奇效

时间:2017-12-14 14:49:48      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:ola   乱序   div   span   time   同事   des   class   rom   

  项目里面有遇到一个需求,查询一个表,先group by ,再按group 的count(*)进行倒序,取出每个group里面发表时间最新的一个纪录,之前的同事SQL是这样写的

SELECT
    *
FROM
    (
        SELECT
            *
        FROM
            table
        WHERE
            id = ?
        AND status = ?
        ORDER BY
            created_time DESC
    ) AS a
GROUP BY
    a.group
ORDER BY
    count(*) DESC
LIMIT 10

  但是呢,最后取出来的数据是乱序的,也就是说该数据在所在的group里面不是发表时间最新的,很奇怪。最后呢,我给这条语句加了一个limit,如下

SELECT
    *
FROM
    (
        SELECT
            *
        FROM
            table
        WHERE
            id = ?
        AND status = ?
        ORDER BY
            created_time DESC
        LIMIT 10000
    ) AS a
GROUP BY
    a.group
ORDER BY
    count(*) DESC
LIMIT 10

  虽然说是limit 10000,但是整个表里面实际也就3000多数据,但是这样一来查出来的数据就是group里面最新的数据了。我在想mysql里面的limit是不是像java的volatile那样,具备代码优化保持变量相对位置不变的“奇效”

mysql里面 limit的奇效

标签:ola   乱序   div   span   time   同事   des   class   rom   

原文地址:http://www.cnblogs.com/oreo/p/8037450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!