【问题标题】:How to select N records from a table in mysql如何从mysql中的表中选择N条记录
【发布时间】:2012-01-10 15:14:20
【问题描述】:

如何从一个有 1000 多条记录的表中只获取 10 条记录。我有一个带有 rowid、名称、成本的测试表。

   select  name, cost from test;

这里我只想选择前 10 行,不想选择 rowid。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    要选择前十个记录,您可以使用 LIMIT 后跟所需的记录数:

    SELECT name, cost FROM test LIMIT 10
    

    要从特定位置选择十条记录,您可以使用 LIMIT 10, 100

    SELECT name, cost FROM test LIMIT 100, 10
    

    这将显示记录 101-110

    SELECT name, cost FROM test LIMIT 10, 100
    

    这将显示记录 11-111

    为确保您检索到正确的结果,请确保您也按结果排序,否则返回的行可能是随机的

    您可以阅读更多@http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

    【讨论】:

    • 就我个人而言,我总是使用带有 LIMIT 的 ORDER BY 来保证一致、可重复的结果。
    • 我相信你的第二个例子有错误。在我的测试中,LIMIT 10, 100 返回 100 条记录,从索引 11 开始。LIMIT 100, 10 返回从索引 101 开始的 10 条记录。
    • LIMIT 10 有时会返回少于 10 条记录,所以这对我来说不是正确答案,那么我怎样才能准确地选择 10 条记录?,而不是越来越多。我使用命令行执行此limit 查询,我在第 7 次运行此查询 8 次,我得到 8 条记录而不是 10 条记录。
    【解决方案2】:

    当你使用LIMIT时,你应该有一个ORDER BY子句,这样如果你连续调用两次并且没有数据发生变化,你将得到相同的记录集。

    所以,请执行以下操作:

    select  name, cost 
    from test 
    order by rowid
    limit 10; 
    

    【讨论】:

      【解决方案3】:
      SELECT TOP(10) name, cost FROM test;
      

      【讨论】:

        【解决方案4】:

        使用此查询,您可以获得前 10 条记录。

        SELECT employee_id, first_name 
        FROM employees  
        LIMIT 10;
        

        【讨论】:

          【解决方案5】:

          使用下面的查询可以获得前 N 条记录 假设 N=10

          SELECT name, cost FROM test LIMIT 10;
          

          假设你想从第 M 行开始获取 10 条记录然后(行索引从 0 开始)

          SELECT name, cost FROM test LIMIT 10 OFFSET (M-1);
          

          【讨论】:

            猜你喜欢
            • 2012-02-07
            • 1970-01-01
            • 1970-01-01
            • 2019-02-28
            • 2016-05-06
            • 1970-01-01
            • 1970-01-01
            • 2010-11-27
            • 2015-03-23
            相关资源
            最近更新 更多