如何从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条记录的主要内容,如果未能解决你的问题,请参考以下文章