MySQL - 结合DISTINCT,ORDER BY和LIMIT

时间:2011-11-12 03:21:21

标签: mysql sql

我想知道涉及运算符DISTINCTORDER BYLIMIT的SQL查询应该有什么期望。我认为我的问题源于对应该应用SQL的运算符的顺序的误解

例如,

CREATE TABLE test(id int)

SELECT DISTINCT id
FROM test
ORDER BY id
LIMIT 10

根据我对SQL的了解,我无法看到以下哪些(如果有的话)发生

  1. 排序前10行test,然后返回该子集中不同id的列表
  2. 对测试中所有不同id的列表进行排序,然后返回前10位
  3. id的前10行中不同test的列表已排序然后返回
  4. 如果重要,我正在使用MySQL(MyISAM)

2 个答案:

答案 0 :(得分:2)

从“从内到外”的角度来考虑它,所以会发生以下情况:

  1. 获取不同ID列表
  2. 按升序排序
  3. 列出前10个

答案 1 :(得分:2)

首先选择SELECT,然后选择ORDER BY,然后选择LIMIT。这是真的,除了一些同时具有TOP和LIMIT关键字的数据库(好吧,我知道一个)。在该引擎中,LIMIT是WHERE子句的一部分(在SELECT级别进行评估),并且在ORDERing之后应用TOP。