我想知道涉及运算符DISTINCT
,ORDER BY
和LIMIT
的SQL查询应该有什么期望。我认为我的问题源于对应该应用SQL的运算符的顺序的误解
例如,
CREATE TABLE test(id int)
SELECT DISTINCT id
FROM test
ORDER BY id
LIMIT 10
根据我对SQL的了解,我无法看到以下哪些(如果有的话)发生
test
,然后返回该子集中不同id
的列表id
的列表进行排序,然后返回前10位id
的前10行中不同test
的列表已排序然后返回如果重要,我正在使用MySQL(MyISAM)
答案 0 :(得分:2)
从“从内到外”的角度来考虑它,所以会发生以下情况:
答案 1 :(得分:2)
首先选择SELECT,然后选择ORDER BY,然后选择LIMIT。这是真的,除了一些同时具有TOP和LIMIT关键字的数据库(好吧,我知道一个)。在该引擎中,LIMIT是WHERE子句的一部分(在SELECT级别进行评估),并且在ORDERing之后应用TOP。