2011-09-04 137 views
0

从MySQL中的简单SQL查询我怎么才能得到5个第一个结果?
然后,我怎样才能得到接下来的5个结果?选择SQL查询的一些结果

例如(伪代码):

select * from (select * from some_table) where <first 5 results> 
select * from (select * from some_table) where <second 5 results (6-10)> 
+0

什么能阻止你一次获得前10个结果? – rkg

+0

不同场合的不同结果。 – Ash

回答

3

你应该能在年底拿到第5个结果与LIMIT 5您的声明:

SELECT * FROM some_table LIMIT 5; 

然后你可以得到如下查询结果6-10:

SELECT * FROM some_table LIMIT 5 OFFSET 5; 

再举一个例子,你可以得到的结果与6-15这样的查询:

SELECT * FROM some_table LIMIT 10 OFFSET 5; 

请记住,如果你不添加ORDER BY声明,结果是以任意顺序检索。因此,在没有ORDER BY的情况下使用LIMITOFFSET并没有意义。

+0

我想我的例子可能太简单了。如果我的查询看起来像这样,你的解决方案仍然可以工作:'SELECT * FROM some_table where some_field> 11'? – Ash

+0

你绝对可以添加一个WHERE子句并让事情仍然有效。真正的问题是,如果你不保证订单,说你想要“前5行”或“6-10行”没有意义。假设您有一张表,名称为“name_table”,其中有一列“first_name”,值为“Alice”,“Bob”,“Charlie”和“Dave”。如果你做SELECT * FROM name_table LIMIT 1,你可以得到任何值,但是如果你做SELECT * FROM name_table ORDER BY first_name LIMIT 1,那么你一定会得到“Alice” –

+0

好吧,明白了。谢谢! – Ash

0

您可以通过一个SQL UNION

select * from (select * from some_table) where <first 5 results> 
UNION ALL 
select * from (select * from some_table) where <second 5 results (6-10)> 
做到这一点