2011-11-12 192 views
1

我想知道什麼應該從一個SQL查詢涉及到的運算符DISTINCT,ORDER BYLIMIT。我想我的問題是植根於這SQL運營商應適用MySQL - 結合DISTINCT,ORDER BY和LIMIT

例如順序的誤解,根據我的SQL知識

CREATE TABLE test(id int) 

SELECT DISTINCT id 
FROM test 
ORDER BY id 
LIMIT 10 

,我看不到它(如果有的話)以下的應該發生

  1. test第10行進行排序,然後不同的id S的子集列表返回
  2. 的列表中的所有不同id個S IN測試進行排序,然後前10返回
  3. 獨特id的中前10行的test列表進行排序,然後返回

如果它的事項,我使用的是MySQL (MyISAM數據)在「裏面去」方面

回答

2

首先選擇,然後ORDER BY,然後LIMIT。這是真的,除了一些數據庫(嗯,我知道一個)同時擁有TOP和LIMIT關鍵字。在該引擎中,LIMIT是WHERE子句的一部分(在SELECT級別評估),TOP在ORDERing之後應用。

+0

感謝您的回答。我期望通常瞭解運算符優先級在SQL中的工作原理,您是否可以提供一個有用的參考。 – Mike

2

想起來了,所以會發生以下情況:

  1. 獲取不同的ID列表
  2. 令他們在登荷蘭國際集團爲了
  3. 列表中的第10