选择我的表中除前20行之外的所有行

时间:2014-04-08 09:03:36

标签: mysql

我想从我的表中选择除前20行之外的所有行。怎么可能?行总数不是静态的。

SELECT statistics_id,title, user_name FROM (
    SELECT statistics_id,title, user_name FROM statistics ORDER BY statistics_id DESC 
    LIMIT(select count(*)from statistics )-20 
) sub
ORDER BY access_statistics_id ASC

我知道' LIMIT(从统计数据中选择计数(*))-20'不是一个正确的方法。请帮忙。

6 个答案:

答案 0 :(得分:0)

试试这个

   DECLARE v_max bigint unsigned default ~0;
   SELECT statistics_id,title, user_name 
   FROM statistics 
   LIMIT 20, v_max;

答案 1 :(得分:0)

写完选择查询后,你只需要包含,

LIMIT 21,100;

21-Offset,即您要从哪一行开始选择和

100-是限制[你可以根据需要设置]

答案 2 :(得分:0)

你真的需要:

SELECT 
  statistics_id, title, user_name 
FROM statistics 
ORDER BY 
  statistics_id ASC
LIMIT 20, 18446744073709551615;

根据MySQL Documentation

  

从特定偏移量检索所有行直到结果的末尾   设置,您可以使用一些大数字作为第二个参数。这个   语句检索从第96行到最后一行的所有行:

     

SELECT * FROM tbl LIMIT 95,18446744073709551615;

答案 3 :(得分:0)

如果表增长很快,那么选择所有行(前20个除外)不是一个好主意。在这种情况下,您应该批处理查询,并一次处理一部分条目,例如:

SELECT * FROM tbl LIMIT 20,120;

答案 4 :(得分:-1)

尝试使用LIMIT语法的偏移选项。您可以在http://dev.mysql.com/doc/refman/5.0/en/select.html了解有关LIMIT语法的更多信息。

SELECT `statistics_id`
, `title`
, `user_name`
FROM `statistics` 
ORDER BY `statistics_id` ASC
LIMIT 20, 18446744073709551615

答案 5 :(得分:-1)

文档说(https://dev.mysql.com/doc/refman/5.5/en/select.html)以下内容:

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

SELECT * FROM tbl LIMIT 95,18446744073709551615;

所以你可以使用像

这样的东西
LIMIT 20, veryLargeNumber