2010-10-13 59 views
2

我有一個像這樣的查詢,我想以分頁格式顯示排序的記錄。在MySQL查詢中執行ORDER BY和LIMIT的順序

這是我的查詢。

SELECT * FROM answers 
WHERE userid = '10' 
ORDER BY votes LIMIT 10, 20 

LIMIT的兩個參數將用於生成記錄的逐頁顯示。現在,我的問題是ORDER BY。 MySQL如何執行此查詢?

1路

  • 根據過濾器
  • 排序他們根據過濾器
  • 選擇記錄
  • 限制它們

第二方式

  • 選擇記錄
  • 限制它們
  • 排序他們

如果我認爲像MySQL的引擎,我想實現第2次,因爲我將不得不以較低的記錄進行排序?

有人可以對此有所瞭解嗎?

Regards

回答

1

一個SQL LIMIT將在所有數據庫總是對查詢結果的工作,所以它會運行與ORDER查詢BY然後這一結果將是有限的。這是一個功能需求,數據庫不需要像這樣執行。

因此第一種方式。

+0

這證明我需要實踐的思維像MySQL :) – vikmalhotra 2010-10-13 03:55:04

2

Mysql遵循第一種方式。

0

最後兩個答案中提到的第一種方法。從用戶角度來看,第二種方式反正不會很有用。

1

如果您想要第二種方式,請嘗試使用具有限制的子查詢,然後再訂購。

喜歡的東西:

SELECT * FROM 
(
    SELECT * FROM answers 
    WHERE userid = '10' 
    LIMIT 10 
) 
ORDER BY votes