2011-11-12 2 views
1

연산자 DISTINCT, ORDER BYLIMIT이 포함 된 SQL 쿼리에서 기대해야하는 것이 무엇인지 궁금합니다. 내가MySQL - DISTINCT, ORDER BY 및 LIMIT 조합

CREATE TABLE test(id int) 

SELECT DISTINCT id 
FROM test 
ORDER BY id 
LIMIT 10 

SQL의 내 지식을 바탕으로, 내 질문은 SQL 연산자는 예를 들어

을 적용하는 순서의 오해에 뿌리를두고 생각, 내가 볼 수없는 (있는 경우) 다음 중이 발생한다

test의 처음 10 개 행이 정렬
  • , 그 부분 집합의 서로 다른 id s의 목록의
  • 목록을 반환
      모든 별개을 테스트의 다음 10 다음 분류되어
    1. test의 처음 10 행의 고유 한 id 년대의 목록을 반환, 분류가 중요한 경우에, 나는 MySQL을 사용하고 있습니다

    을 반환 (의 MyISAM) "안쪽에서 바깥을"의 관점에서 그것의

  • 답변

    2

    먼저 선택한 다음, ORDER BY, 다음 LIMIT. 이는 TOP 및 LIMIT 키워드가 모두있는 몇 가지 데이터베이스 (음, 알고 있습니다)를 제외하고는 사실입니다. 해당 엔진에서 LIMIT는 WHERE 절 (SELECT 수준에서 평가 됨)의 일부이며 ORDERING 후 TOP가 적용됩니다.

    +0

    답변 해 주셔서 감사합니다. SQL에서 연산자 우선 순위가 어떻게 작동하는지 일반적으로 이해하고 싶습니다. 도움이 될만한 참조를 제공 할 수 있습니까? – Mike

    2

    생각하므로 다음과 같은 상황이 발생합니다

    1. 주문을 승천의 고유 한 ID의 목록을 가져옵니다
    2. 목록 순서 보내고 처음 10