ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL ORDER BY
    공부하기/데이터베이스 2022. 12. 6. 19:42
    [기본]
    SELECT 
       select_list
    FROM 
       table_name
    ORDER BY 
       column1 [ASC|DESC], 
       column2 [ASC|DESC],
       ...;
       
     [예제 1]
    SELECT 
       *
    FROM 
       table_name
    ORDER BY 
       country, 
       postalCode;
       
     [예제 2] 
    SELECT 
        orderNumber, 
        orderlinenumber, 
        quantityOrdered * priceEach
    FROM
        orderdetails
    ORDER BY 
       quantityOrdered * priceEach DESC;
       
     [예제 2 개선]
    SELECT 
        orderNumber, 
        orderlinenumber, 
        quantityOrdered * priceEach AS subtotal
    FROM
        orderdetails
    ORDER BY 
       subtotal DESC;
    
      [FIELD 문법]
      
      FIELD(str, str1, str2, ...) 
       
      [FIELD 예제 1]
      
      SELECT FIELD('A', 'A', 'B','C');
      
      [FIELD 예제 2]
      
      SELECT FIELD('B', 'A','B','C');
      
      [심화 예제]
     SELECT 
        orderNumber, status
    FROM
        orders
    ORDER BY FIELD(status,
            'In Process',
            'On Hold',
            'Cancelled',
            'Resolved',
            'Disputed',
            'Shipped');

    * 하나 이상의 열(column)로 정렬할 수 있습니다 *

    * ASC는 오름차순 DESC는 내림차순을 의미합니다. *

    * SELECT, FROM 다음에 실행됩니다. *

    * NULL은 NULL이 아닌 값보다 낮습니다. *

    * 오름차순 정렬이 디폴트값이므로 오름차순 정렬을 원할 경우 ASC를 생략할 수 있습니다. *

    * 여러개의 열을 기준으로 정렬할 경우 각각의 열을 ',' 로 구분합니다. *

     

    [예제 1]

     

    정렬을 하지 않고 검색했을 경우

    country를 기준으로 오름차순 정렬하여 검색할 경우

    country를 기준으로 오름차순 정렬한 검색 결과에서 다시 postalCode로 오름차순 정렬할 경우

    -> country로 검색한 검색 결과의 뭉치 내에서 다시 postalCode로 정렬하여 테이블을 보여준다.

     

    [예제 2]

    테이블의 열을 계산하여 계산한 결과값을 기준으로 정렬할 수 있습니다.

    위 이미지와 같은 테이블로 보여지나 계산식의 수식이 테이블의 열 이름으로 부여돼 보여집니다.

     

    [예제2 개선]

    계산식에 이름을 부여하여 테이블의 열 이름을 지정할 수 있습니다.

     

    [FIELD 문법]

     

    FIELD(str, str1, str2, ...)에서 str을 찾는 문자, str을 제외한 나머지 문자중 str이 몇번째 인덱스에 위치하는지 인덱스를 반환합니다. 

     

    [FIELD 예제 1]

     -> 제일 첫번째 문자 'A'를 두번째부터 n번째 문자중 찾습니다. 'A'는 첫번째 위치에 위치하여 아래 output과 같이 1이 리턴됩니다.

     

    [FIELD 예제 2]

    -> 제일 첫번째 문자 'B'를 두번째부터 n번째 문자중 찾습니다. 'B'는 두번째 위치에 위치하여 아래 output과 같이 2가 리턴됩니다.

    [심화 예제]

    -> ORDER BY FIELD (열이름, 정렬 순서)를 지정하여 정렬 기준을 설정하여 결과값을 확인할 수 있습니다.

    위 쿼리를 실행하면 아래와 같은 결과값을 얻습니다.

     

    +-------------+------------+
    | orderNumber | status     |
    +-------------+------------+
    |       10425 | In Process |
    |       10421 | In Process |
    |       10422 | In Process |
    |       10420 | In Process |
    |       10424 | In Process |
    |       10423 | In Process |
    |       10414 | On Hold    |
    |       10401 | On Hold    |
    |       10334 | On Hold    |
    |       10407 | On Hold    |
    ...

    '공부하기 > 데이터베이스' 카테고리의 다른 글

    MySQL OR Operator 요약  (0) 2023.02.08
    Mysql And Operator 요약  (0) 2023.02.08
    MySQL DISTINCT 요약  (0) 2023.02.08
    MySQL SELECT statement  (0) 2022.12.05
    mysql sample database download and load  (0) 2022.12.05
Designed by Tistory.