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

33

我该如何从拥有1000条以上记录的表中获取仅10条记录。我的测试表格包含行ID,名称和成本列。

   select  name, cost from test;

我想要选择前10行并且不想选择rowid。

5个回答

52

要选择前十条记录,您可以使用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条记录。

为了确保您检索到正确的结果,请确保对结果进行 ORDER BY,否则返回的行可能是随机的。

您可以在http://php.about.com/od/mysqlcommands/g/Limit_sql.htm阅读更多信息。


2
个人而言,我总是会使用带有 LIMIT 的 ORDER BY 以确保结果的一致性和可重复性。 - Joe Stefanelli
3
我认为你的第二个例子有误。在我的测试中,LIMIT 10, 100 返回从第11条记录开始的100条记录。而LIMIT 100, 10返回从第101条记录开始的10条记录。 - jatrim
“LIMIT 10” 有时会返回少于10条记录,所以这对我来说不是正确的答案,那么我该如何选择确切的10条记录?而不是少于或多于10条。我使用命令行执行此“limit”查询,我运行了8次此查询,在第7次中我只得到了8条记录而不是10条记录。 - 151291

9
当使用LIMIT时,应该有一个ORDER BY子句,这样如果连续两次调用它且没有数据更改,你将获得相同的记录集。
因此,请执行以下操作:
select  name, cost 
from test 
order by rowid
limit 10; 

3
SELECT TOP(10) name, cost FROM test;

0

使用这个查询,你可以获取前10条记录。

SELECT employee_id, first_name 
FROM employees  
LIMIT 10;

0

使用以下查询可以获取前N条记录,假设N=10

SELECT name, cost FROM test LIMIT 10;

假设你想从第M行开始获取10条记录(行索引从0开始)。
SELECT name, cost FROM test LIMIT 10 OFFSET (M-1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接