【问题标题】:MYSQL - LIMIT inside a rangeMYSQL - 限制在一个范围内
【发布时间】:2011-06-13 14:38:42
【问题描述】:

我已经为结果构建了一个使用 AJAX 的滑块,我有一个小问题如下:

假设一个表有一组1 to 15 行,但是,我只处理前 9 行;在第一阶段(SELECT * FROM table ORDER BY id DESC LIMIT 9) 并使用结果来构建导航和显示第一组。

然后在 第二阶段 我正在查询这 9 个项目,每次从 left 查询 3 个所以我 (SELECT * FROM table WHERE id > '$1' ORDER BY id DESC LIMIT 3)right 所以i (SELECT * FROM table WHERE id < '$1' ORDER BY id DESC LIMIT 3) 其中$1 是每个组的最后一项,所以(13 || 11 || 7) 来自(15, 14, 13) || (12, 11, 10) || (9, 8, 7)

好吧,想象一下上面的详细解释如下所示:

<- [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 ] ->
   [    15     ]  [    14     ]  [    13     ]

好的,问题是当“右查询”到达last item: 7时,结果集是(6, 5, 4),这显然是正确的,但不在我们的范围内15 到 7,而不是为了我的目的,它应该什么都不返回。我如何用一个 SQL 查询做到这一点?


这里是滑动条demo (右边的最新项目,使用右箭头,超出范围); 希望这不是一个太模糊的问题,因为我很难弄清楚如何解释这个问题。 ;)

【问题讨论】:

    标签: mysql select range limit


    【解决方案1】:

    在第 1 阶段,您可以记录返回行中的最小 id。然后在您的其他查询中,只需添加一个 WHERE 条件以确保所选 id 大于或等于该最小值,例如

    SELECT * FROM table WHERE id <'$1' AND id >='$min' ORDER BY id DESC LIMIT 3
    

    如果您的最小 id 为 7,并且“正确”查询使用值 7 完成,则它不会返回任何内容。如果我正确理解您的问题,这就是您想要的行为。

    【讨论】:

    • 嘿,丹,我无法想象一个最简单的解决方案,感谢您的努力! ;)
    猜你喜欢
    • 2015-04-06
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2014-08-04
    • 1970-01-01
    相关资源
    最近更新 更多