如何从mysql中的表中选择N条记录

Posted

技术标签:

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

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

   select  name, cost from test;

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

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于如何从mysql中的表中选择N条记录的主要内容,如果未能解决你的问题,请参考以下文章

MySQL如何复制表中的一条记录并插入

MySQL 如何从今天记录的表中选择数据?

从 MySQL 查询中从百万行中选择第 N 条记录

如何从具有多个页面的表中获取表记录?

如何从mysql中的表中删除重复的行

如何从 SQL CE 中的表中构建逗号分隔列表?