【问题标题】:MYSQL start at nth result (opposite of LIMIT)MYSQL 从第 n 个结果开始(与 LIMIT 相反)
【发布时间】:2014-11-19 14:10:09
【问题描述】:

是否有从一定数量的结果开始的 SQL 命令? 示例:

SELECT * FROM table WHERE ID=1 BEGIN AT 100

【问题讨论】:

  • 限制与我想要的相反。我想跳过前 100 个结果。
  • 我正在阅读一些文档,您可能是对的。限制看起来它支持范围值stackoverflow.com/questions/7558256/inverse-limit
  • 不能像“SELECT * FROM table WHERE ID=1 limit 100,100;”这样使用;

标签: mysql sql sql-limit


【解决方案1】:

尝试创建一个临时 行号,然后将其用作起点的标准,在您的案例 100 中,例如:

 SELECT * FROM (
      SELECT (@RowNum := @RowNum + 1) as Row, tbl.* FROM tbl, 
        (SELECT @RowNum:=0) ctr
       ) t
 WHERE Row >= 100

Demo

【讨论】:

    【解决方案2】:

    SELECT * FROM table WHERE ID=1 LIMIT 100,500;

    结果将显示从 100 到 500 的值

    【讨论】:

    • 这不会显示从 100 的所有记录,只显示第 100 到 500 的部分
    【解决方案3】:

    发件人:http://dev.mysql.com/doc/refman/5.0/en/select.html

    要检索从某个偏移量到结果集末尾的所有行,您可以为第二个参数使用一些较大的数字。此语句检索从第 96 行到最后一行的所有行:

    SELECT * FROM tbl LIMIT 95,18446744073709551615;
    

    在你的情况下:

    SELECT * FROM table WHERE ID=1 BEGIN AT 99,18446744073709551615
    

    更多信息:

    对于准备好的语句,您可以使用占位符(从 MySQL 版本 5.0.7 开始支持)。以下语句将从 tbl 表中返回一行:

    SET @a=1;
    PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?';
    EXECUTE STMT USING @a;
    

    以下语句将返回 tbl 表的第二到第六行:

    SET @skip=1; SET @numrows=5;
    PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
    EXECUTE STMT USING @skip, @numrows;
    

    【讨论】:

    • 我在寻找的时候没有看到它们。请注意,您接受的答案是有限的。
    • 这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2016-09-10
    • 1970-01-01
    • 2019-03-13
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多