如何从 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 支持 LIMIT
和 OFFSET
关键字,因此您可以获得 "pages",例如
SELECT * FROM table [ ORDER BY ... ] OFFSET 1000 LIMIT 1000
会给你第二组1000条记录。
ORDER BY
部分是可选的,但没有明确的顺序,第二个 "page" 或结果可以是任何东西,甚至与第一个 "page" 相同(这可以在各种数据库的实践中观察到)。
注意:OFFSET
不一定是分页结果的最佳方式。尽管数据库普遍支持OFFSET
、use 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);
你好有一个 table,其中包含超过 300 万条记录(行)。所以我想 select 他们喜欢 1st, 2nd, 3rd .... 5 缺乏记录。我怎样才能做到这一点。
我不确定你的问题是否被正确理解,但你可以使用这样的东西
SELECT * FROM `table_name` LIMIT 10 OFFSET 100
10为起点
100条为上限(根据您的要求获取记录总数)
Presto、MySQL 和 PostgreSQL 支持 LIMIT
和 OFFSET
关键字,因此您可以获得 "pages",例如
SELECT * FROM table [ ORDER BY ... ] OFFSET 1000 LIMIT 1000
会给你第二组1000条记录。
ORDER BY
部分是可选的,但没有明确的顺序,第二个 "page" 或结果可以是任何东西,甚至与第一个 "page" 相同(这可以在各种数据库的实践中观察到)。
注意:OFFSET
不一定是分页结果的最佳方式。尽管数据库普遍支持OFFSET
、use 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);