복붙노트

[SQL] SQLite는 사용자 정의 순서로

SQL

SQLite는 사용자 정의 순서로

나는 범주에있는 테이블을 가지고 :

ID  Category
"1","Baking"   
"3","Family"   
"4","Entertaining"   
"5","Children"   
"6","Desserts"   

지금은 select 문에 대한 결과를 주문하고 싶습니다

ID  Category
"4","Entertaining"   
"3","Family"  
"1","Baking"   
"5","Children"   
"6","Desserts"  

예를 들어. MySQL은, 당신은 이런 식으로 그것을 할 것입니다 :

SELECT * FROM CATEGORIES ORDER BY FIELD (ID, 4,3,1,5,6);

당신은 SQLite는 얼마나을하지만 할 것? 나는 필드에 "에 의해 순서를"필요가 없습니다.

해결법

  1. ==============================

    1.

    ORDER BY 
      CASE ID
        WHEN 4 THEN 0
        WHEN 3 THEN 1
        WHEN 1 THEN 2
        WHEN 5 THEN 3
        WHEN 6 THEN 4
      END
    
  2. ==============================

    2.그 일의 두 번째 방법은 (... THEN 이미 다른 답변에 명시된 종료하면 첫 번째는 케이스 인)입니다 :

    그 일의 두 번째 방법은 (... THEN 이미 다른 답변에 명시된 종료하면 첫 번째는 케이스 인)입니다 :

    ORDER BY ID=4 DESC,
             ID=3 DESC,
             ID=1 DESC,
             ID=5 DESC,
             ID=6 DESC
    
  3. ==============================

    3.왜?

    왜?

    정렬 순서는 응용 프로그램 고유의 것입니다 때문입니다 경우 응용 프로그램에서보다는 데이터베이스에 정렬을한다.

    정렬 순서이기 때문에이 경우 그냥이 하나 개의 쿼리에 고유은 내가 귀하 께서 제안 그러나 쿼리에 인코딩, 예를 들어 호출 응용 프로그램이 투명 (표준 SQL 구문) :

    SELECT T2.ID, T2.Category, 
           T2.query_name_here_sort_order
      FROM (
            SELECT T1.ID, T1.Category, 
                   CASE ID
                      WHEN 4 THEN 1
                      WHEN 3 THEN 2
                      WHEN 1 THEN 3
                      WHEN 5 THEN 4
                      WHEN 6 THEN 5
                   END AS query_name_here_sort_order
              FROM CATEGORIES AS T1
           ) AS T2 (
                    ID, Category, 
                    query_name_here_sort_order
                   )
     ORDER 
        BY query_name_here_sort_order;
    

    정렬 순서는 여러 쿼리 및 / 또는 응용 프로그램에서 사용하는 경우 다음 쿼리에서 해당 열을 사용하여 데이터베이스에서 테이블의 컬럼에 추가합니다.

  4. from https://stackoverflow.com/questions/3303851/sqlite-and-custom-order-by by cc-by-sa and MIT license