2012-12-12 83 views
1

我有一個包含元素和關鍵字的MySQL數據庫。如果有人通過關鍵字搜索元素,他們可能會獲得大量的點擊。我不想返回所有匹配的元素,而是想返回第m組元素。這將允許我顯示前m個匹配元素,然後獲取並顯示下一個m個匹配元素等。在MySQL查詢中返回匹配結果的子集

作爲一個具體的例子,假設我有一個圖像數據庫,並且使用關鍵字「ball」進行搜索,總共有500個匹配,我想查詢數據庫返回前50,然後第二個50等。假設元素的順序是確定性的(使用ORDER BY),我不知道如何分 - 選擇這些匹配元素的一個子集。

感謝您的任何幫助。

回答

1

您可以爲查詢添加一個LIMIT條件,該條件允許您指定多個結果和一個結果偏移量。

例子:

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

這將使你的前50個結果開始的結果偏移0 ..

獲得下一個50你只需要改變這:

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

從結果偏移量50開始,得到50個結果。

通常,當你e編碼分頁(提供結果集的第1頁,第2頁,第3頁),您將傳遞要在URL中開始的偏移量,以便運行相同的查詢,但從不同偏移量開始獲取結果。

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

然後,使用LIMIT clause

要將查詢限制爲前50個使用:

LIMIT 50; 

要限制你的查詢到第二個50使用:

LIMIT 50, 50; 

要限制您的查詢到第三個50使用:

LIMIT 100, 50; 

您可以將值更改爲更大或更小的集合。 你最終的查詢會再看看這樣的:

​​

或者,如果你不使用通配符搜索,尋找特定關鍵字的值:

SELECT keyword, otherfield from table 
WHERE keyword = 'ball' 
ORDER BY whatever ASC 
LIMIT 50;