1

我有一个包含元素和关键字的 MySQL 数据库。如果有人按关键字搜索元素,他们可能会获得大量点击。与其返回所有匹配的元素,我想做相当于返回第 n 组 m 个元素。这将允许我显示前 m 个匹配元素,然后获取并显示接下来的 m 个匹配元素,等等。

作为一个具体的例子,假设我有一个图像数据库,我使用关键字“ball”进行搜索,总共有 500 个匹配项,我想查询数据库以返回前 50 个,然后是第二个 50,等等。假设元素的顺序是确定的(使用 ORDER BY),我不知道如何子选择这些匹配元素的子集。

谢谢你的帮助。

4

2 回答 2

1

您可以在查询中添加 LIMIT 条件,它允许您指定结果数量和结果偏移量。

例子:

SELECT * FROM table WHERE keyword = 'ball' LIMIT 0, 50

这将为您提供从结果偏移量 0 开始的前 50 个结果。

要获得下一个 50,您只需将其更改为:

SELECT * FROM table WHERE keyword = 'ball' LIMIT 50, 50

从结果偏移量 50 开始,它会为您提供 50 个结果。

通常,当您编码分页(提供结果集的第 1、2、3 页)时,您会在 URL 中传递要开始的偏移量,以便运行相同的查询但从不同的偏移量开始获得结果。

于 2012-12-12T17:46:29.043 回答
0
SELECT keyword, otherfield from table
WHERE keyword LIKE '$keywordvar%'
ORDER BY whatever ASC

然后,使用LIMIT 子句

要将您的查询限制为前 50 个,请使用:

LIMIT 50;

要将您的查询限制为第二个 50,请使用:

LIMIT 50, 50;

要将您的查询限制为第三个 50,请使用:

LIMIT 100, 50;

您可以将值更改为更大或更小的集合。您的最终查询将类似于:

SELECT keyword, otherfield from table
WHERE keyword LIKE '$keywordvar%'
ORDER BY whatever ASC
LIMIT 50;

或者,如果您不使用通配符搜索并寻找特定的关键字值:

SELECT keyword, otherfield from table
WHERE keyword = 'ball'
ORDER BY whatever ASC
LIMIT 50;
于 2012-12-12T17:58:15.730 回答