2017-06-14 40 views
0

我想每次进行数据库调用时都要选择5行的块。PHP sql:选择一个行块

在我的数据库中,某些列可能已被删除和其他人没有,所以ID列可以有“差距”,像失踪的数字,这样的事情:

ID name  category .... 

33 xxxx  xxxxxxx 

34 xxxx  xxxxxxx 

38 xxxx  xxxxxxx 

40 xxxx  xxxxxxx 

41 xxxx  xxxxxxx 

45 xxxx  xxxxxxx 

49 xxxx  xxxxxxx 

... 

我已经奔的东西喜欢尝试这样的:

$query = "SELECT * FROM Products LIMIT 33, 5"; 

我的理解,加入LIMIT到查询就会采取下一步继33起5行,但它似乎并不奏效。

任何更好的建议,以获得5行开始每个特定的ID?

+1

'其中id_field_name> $ id'可能是您要查找的机器人 – ThisGuyHasTwoThumbs

+0

hey @ThisGuyHasTwoThumbs,将采用大于$ id中指定的任何ID,这没关系,但是如何将其限制为5个结果每次通话 – codeKiller

+0

使用限制偏移量不与id连接。它正在处理行。像ThisGuyHasTwoThumbs提出的使用条件。还存储最后选择的ID并更改每次通话的条件。使用限制行数限制为5 –

回答

3

如果你读手册的限制条款,你会看到definintion:

LIMIT {[offset,] row_count ... 

所以你的情况LIMIT 33, 5意味着SKIP 33 records and TAKE 5 following records,并FIND RECORD WITH ID = 33 and TAKE 5 following records

所以,你的选择是使用where子句:

SELECT * FROM Products WHERE ID > 33 ORDER BY ID ASC LIMIT 5 
+0

感谢@u_mulder,我试试看 – codeKiller

0

下面的LIMIT关键字的值的偏移量和行的从完整的记录数返回。它们不是由查询返回的ID或其他值。

阅读关于MySQL SELECT statement

如果你想获得5行开始与一个ID为33那么你的查询是:

SELECT * 
FROM Products 
WHERE ID >= 33 
ORDER BY ID 
LIMIT 5 

没有LIMIT 5,上面的查询返回比大于或等于与33ID所有行,整理按照ID的升序排列。 LIMIT 5子句(这是LIMIT 0, 5的简写)告诉MySQL仅返回列表中的第一个5行。