如何从 SQL table 中 SELECT 部分记录

How to SELECT part of records from a SQL table

你好有一个 table,其中包含超过 300 万条记录(行)。所以我想 select 他们喜欢 1st, 2nd, 3rd .... 5 缺乏记录。我怎样才能做到这一点。

我不确定你的问题是否被正确理解,但你可以使用这样的东西

SELECT * FROM `table_name` LIMIT 10 OFFSET 100

10为起点
100条为上限(根据您的要求获取记录总数)

Presto、MySQL 和 PostgreSQL 支持 LIMITOFFSET 关键字,因此您可以获得 "pages",例如

SELECT * FROM table [ ORDER BY ... ] OFFSET 1000 LIMIT 1000

会给你第二组1000条记录。 ORDER BY 部分是可选的,但没有明确的顺序,第二个 "page" 或结果可以是任何东西,甚至与第一个 "page" 相同(这可以在各种数据库的实践中观察到)。

注意:OFFSET不一定是分页结果的最佳方式。尽管数据库普遍支持OFFSETuse it judiciously

急速 supports OFFSET since Presto 311。 在那个版本之前,Presto 有 LIMIT 但没有 OFFSET,所以 您需要按可以用作 "page size" 的值进行排序,例如

SELECT * FROM table WHERE id > <<last-seen-id>> ORDER BY id ASC LIMIT 1000

<<last-seen-id>> 将是您已经在 1000 条记录集中看到的最高 ID 值,您必须为每个 "page" 不断更新它。 即使在本机支持 OFFSET 的数据库中,这实际上也是 the recommended approach

我一次设置了10行。你可以根据你的设置。

你可以试试这个:

前 10 行:

SELECT * FROM tableName LIMIT 10 OFFSET (1-1)*10

第 2 10 行:

SELECT * FROM tableName LIMIT 10 OFFSET (2-1)*10

第 3 10 行:

SELECT * FROM tableName LIMIT 10 OFFSET (3-1)*10

第 n 10 行:

SELECT * FROM tableName LIMIT 10 OFFSET (n-1)*10

希望对您有所帮助。

MSSQL 新版本支持分页

下面代码供大家参考。

Declare
@PageNumber INT = 1,
@PageSize   INT = 100

SELECT Column1, Column2,Column3 
    FROM dbo.[TableName]
    ORDER BY Column1
    OFFSET @PageSize * (@PageNumber - 1) ROWS
    FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);