【问题标题】:Mysql retrieve all rows with limitMysql检索所有有限制的行
【发布时间】:2010-02-19 08:07:22
【问题描述】:

我想检索限制为 0,x.. 的特定用户的所有行

所以我只想问有没有什么方法可以在不调用返回 x& 的 count(id) 的方法的情况下检索 mysql 中的所有行,而不会重载在查询中完全没有限制的现有函数 & 没有我们的字符串.Relace() 功能。

当我们检查显示所有复选框时,mysql内部可能会使用它,然后显示taht表的所有行

【问题讨论】:

  • 您可能想举例说明您的预期结果。
  • @Daniel:我想在页面加载时第一次显示用户的 100 件事情,所以限制帮助我并希望在用户访问他的主页时显示他/她的所有事情我可以做到使用函数重载/string.replace() 但我创建新函数/修改现有函数

标签: sql mysql


【解决方案1】:

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

SELECT * FROM tbl LIMIT 95,18446744073709551615;

这可以在 mysql 开发人员文档中找到。 http://dev.mysql.com/doc/refman/5.0/en/select.html

【讨论】:

  • 我会称这是一个丑陋的黑客,但它似乎是公认的/记录在案的方式。
  • php max int 可能小于 18446744073709551615 所以你应该使用 PHP_INT_MAX 预定义的值来避免溢出。
【解决方案2】:

简单的解决方案是将 int 的最大范围发送到方法,即 2147483647,因为它在 mysql 和 c#(4 个字节)中都相同,可以使用 int.MaxValue。

参见参考资料:

  1. http://dev.mysql.com/doc/refman/4.1/en/numeric-types.html
  2. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types

【讨论】:

    【解决方案3】:

    为什么需要这个

    一个可能想要使用它的场景是在进行服务器端分页时。

    例如,如果想要在每页检索特定数量的结果: 他可以动态编写查询如下:

      'select * from users limit '+ perPage`
    

    但是如果他想要所有结果,perPage 应该是什么?

    简单的解决方案

    limit = (perPage=='x')?'':'limit'+perPage

    现在将查询写为'select * from users' + limit。 如果您想要所有结果,请确保 perPage 的值为“x”。

    【讨论】:

      【解决方案4】:

      如果你想检索所有行,你只是不要使用 LIMIT 子句..

      【讨论】:

      • 他说:“我想检索限制为 0,x.. 的特定用户的所有行。”
      • @deepesh khatri - 那我不明白你为什么要使用LIMIT,如果你不想LIMIT 任何东西
      • @Bozho:我想在页面加载时第一次显示用户的 100 件事情,所以限制在那里帮助我并希望在用户访问他/她的主页时显示他/她的所有事情我可以做到使用功能重载/string.replace() 但我创建新功能/修改现有功能。明白了
      • 你的意思是你想把用户的所有行分成多个页面,所以首先访问他们只看到前 100 行,然后他们可以点击第 2 页并获取第 101 到 200 行,等等。 ..?这正是 LIMIT 的设计目的。检索数据库中的所有相关行,然后在程序中进行过滤是对带宽/cpu 周期的浪费。
      • 你没有回答问题
      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 2014-06-28
      • 2017-05-25
      • 1970-01-01
      • 2016-07-22
      • 2015-12-13
      • 1970-01-01
      相关资源
      最近更新 更多