2009-11-22 81 views
1

我想选择除表格中前5行以外的所有行。忽略前5行?

我该怎么做?

为什么我不能只需键入

$query = "SELECT * 
    FROM ages 
    OFFSET 5 
    ORDER BY id ASC"; 

回答

0

我只需输入:

$query = "SELECT * 
      FROM ages 
      LIMIT 100 
      OFFSET 10"; 

为什么不能有人给我这么一个简单的答案? :)

+0

MySQL文档只是说它是为了兼容性,但根据Postgres文档,它正是您正在寻找的内容:http://www.postgresql.org/docs/7.3/static/queries-limit.html – 2009-11-22 06:18:57

+6

没有人给你“这样一个简单的答案”,因为你想返回*除第一个5(你的答案中的10)之外的所有*行。您发布的“简单答案”只会在跳过前10个后返回90行。如果表中超过100行,您的“简单答案”无法将其返回。 – Asaph 2009-11-22 17:06:21

0

在Oracle:

选择名称,价格从 项目 这里的rownum> 5

+0

http://www.adp-gmbh.ch/ora/sql/rownum.html – 2009-11-22 05:51:13

+0

哦,你的dbms是mysql抱歉。 – 2009-11-22 05:53:47

5

SELECT * FROM TBL LIMIT 5,18446744073709551615;

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

为了取回一定的所有行偏移到结果集的末尾,你可以使用一些大量的第二个参数。此语句检索从第96行到最后一行的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

+0

对于使用魔术数字w/o文档的mysql感到羞耻。不妨使用3141592653589793238 – 2009-11-22 06:08:45

+1

这并不是很神奇。它只是大于表中行数的任何数字。 – recursive 2009-11-22 06:45:48

+0

@jason:返回零行。我测试了它。 – Asaph 2009-11-22 17:03:16

0

这是一个使用变量的解决方案 - 只需添加您的订单条款,你应该设置。

set @n=-1 
select * from TABLE where (@n:[email protected]+1) >= 5; 
+0

查看我的答案,了解如何在单个语句中执行该操作。 – 2009-11-22 06:16:46

+0

初始化变量的好方法。如果解决方案的性能受到影响,您是否有任何想法? – 2009-11-22 19:17:05