如何从数据库中获取信息集(例如结果1-24,25-49等)

时间:2014-09-08 21:38:59

标签: php mysql

我一直在Google上搜索,似乎无法找到正确的答案(我可能没有找到正确的条款),我试图获得25条结果返回每次从数据库,但例如我想做的是:

查询1应返回结果1 - 24

查询2应返回结果25 - 49

等等。

最好的方法是什么?

由于

4 个答案:

答案 0 :(得分:0)

SELECT * FROM `table_name` LIMIT 0,25 // This will give you 1-24 records
SELECT * FROM `table_name` LIMIT 25,25 // This will give you 25-49 records

答案 1 :(得分:0)

来自the manual

  

LIMIT子句可用于约束返回的行数   通过SELECT语句。 LIMIT需要一个或两个数字参数,   必须都是非负整数常量(使用时除外)   准备好的陈述)。

     

使用两个参数,第一个参数指定的偏移量   第一行返回,第二行指定最大数量   要返回的行。初始行的偏移量为0(不是1):

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

所以在你的情况下:

SELECT * FROM `table_name` LIMIT 0,25
SELECT * FROM `table_name` LIMIT 25,25

答案 2 :(得分:0)

(SELECT * 
FROM mytable 
LIMIT 0,24)
UNION 
(SELECT * 
FROM 
mytable 
LIMIT 24,25)
ORDER BY someSortOfId;

请注意,至少应有一列具有唯一值(例如ID),否则结果集将重叠。

答案 3 :(得分:0)

它们是单独的查询,尽管它们在完全相同的条件下从完全相同的表返回完全相同的字段。它们之间的区别是LIMIT块:

LIMIT startRow, rowsCount
--the first row is the 0th, not 1st.

如果您的查询如下:

select * from mytable where field1 = "value1"

您必须执行两个单独的查询(或根据需要执行多少查询):

select * from mytable where field1 = "value1" LIMIT 0, 25
-- will return the first 25 rows

select * from mytable where field1 = "value1" LIMIT 25, 25
-- will return 25 rows starting from the row 25

通用公式:如果要获取特定页面N(从1开始),其中每个页面都有M个元素,则必须附加到查询中:

$yourquery = "select * from mytable where myfield = 'myvalue'";
$yourquery .= sprintf(" LIMIT %d, %d", ($page-1)*$itemsPerPage, $itemsPerPage);
$result = mysql_query($yourquery, $yourconnection);

<强>免责声明

  • mysql_已弃用。改用mysqli_。
  • 从不在实际生产代码中使用sprintf作为参数,除非您知道自己在做什么,因为您可能会暴露SQL注入漏洞。

编辑您可以使用任何想要进行限制的元素。通常,页面具有恒定的大小,但由于您需要不规则的大小(页面1 24元素,页面2 25个元素,您应该)使用以下LIMIT s:

LIMIT 0, 24
--gets the first 24 (say 1st to 24th) elements

LIMIT 24, 25
--gets the following 25 items (say 25th to 49th)