2011-11-12 193 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