복붙노트

[SQL] 어떻게 SQL의 조합에 의해 주문하는?

SQL

어떻게 SQL의 조합에 의해 주문하는?

데이터가 함께 많은 선택과 조합을에서 올 때 그것을 위해 할 수 있습니까? 등

Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"

어떻게 이름이 쿼리를 주문할 수 있습니다.

일부는이 같은 모습을 조회 할 수있다.

Select id,name,age
From Student
Where age < 15 or name like "%a%"
Order by name

그러나이 경우에는 그냥 그 솔루션을 무시합니다.

해결법

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

    1.그냥 써

    그냥 써

    Select id,name,age
    From Student
    Where age < 15
    Union
    Select id,name,age
    From Student
    Where Name like "%a%"
    Order by name
    

    IS에 의해 순서는 전체 결과 집합에 적용

  2. ==============================

    2.

    Select id,name,age
    from
    (
       Select id,name,age
       From Student
       Where age < 15
      Union
       Select id,name,age
       From Student
       Where Name like "%a%"
    ) results
    order by name
    
  3. ==============================

    3.(가) 정렬 UNION의 첫 번째 문에 적용하기 위해서는, 당신은 UNION ALL (이들 모두 오라클에 필요하다고 표시)와 부속에 넣어 수 있습니다 :

    (가) 정렬 UNION의 첫 번째 문에 적용하기 위해서는, 당신은 UNION ALL (이들 모두 오라클에 필요하다고 표시)와 부속에 넣어 수 있습니다 :

    Select id,name,age FROM 
    (    
     Select id,name,age
     From Student
     Where age < 15
     Order by name
    )
    UNION ALL
    Select id,name,age
    From Student
    Where Name like "%a%"
    

    아니면 SELECT가 주문한 최고를 보장 할 수있는 결과이 같은 바닥 SELECT 위에 표시 (니콜라스 캐리의 의견을 주소) :

    Select id,name,age, 1 as rowOrder
    From Student
    Where age < 15
    UNION
    Select id,name,age, 2 as rowOrder
    From Student
    Where Name like "%a%"
    Order by rowOrder, name
    
  4. ==============================

    4.모두 다른 답변이 올바른지,하지만 난 주목할 가치를 생각하는 나는 그래서 ... 당신이 별명에 의해 순서를 필요로 별명이 모두 선택에 대해 동일 있는지 확인합니다 실현되지 않았다 붙어있어 장소

    모두 다른 답변이 올바른지,하지만 난 주목할 가치를 생각하는 나는 그래서 ... 당신이 별명에 의해 순서를 필요로 별명이 모두 선택에 대해 동일 있는지 확인합니다 실현되지 않았다 붙어있어 장소

    select 'foo'
    union
    select item as `foo`
    from myTable
    order by `foo`
    

    내가 먼저 선택하지만, 역 따옴표 다른 사람에 대한 작은 따옴표를 사용하고 알 수 있습니다.

    즉, 당신이 필요로 정렬 당신을 얻을 것이다.

  5. ==============================

    5.주문은 그래서 그냥, 조합 후에 적용됩니다 문장의 끝에서 order by 절을 추가 :

    주문은 그래서 그냥, 조합 후에 적용됩니다 문장의 끝에서 order by 절을 추가 :

    Select id,name,age
    From Student
    Where age < 15
    Union
    Select id,name,age
    From Student
    Where Name like '%a%'
    Order By name
    
  6. ==============================

    6.나는 종류가 UNION의 한에 적용 할 경우 사용 연합 (EU)의 경우 모든 :

    나는 종류가 UNION의 한에 적용 할 경우 사용 연합 (EU)의 경우 모든 :

    Select id,name,age
    From Student
    Where age < 15
    Union all
    Select id,name,age
    From 
    (
    Select id,name,age
    From Student
    Where Name like "%a%"
    Order by name
    )
    
  7. ==============================

    7.다른 답변이 언급 한 바와 같이, LAST 연합 후 '에 의한 주문은'노동 조합에 합류 모두 데이터 세트에 적용해야합니다.

    다른 답변이 언급 한 바와 같이, LAST 연합 후 '에 의한 주문은'노동 조합에 합류 모두 데이터 세트에 적용해야합니다.

    나는 두 개의 데이터 세트를 가지고 있지만, 다른 테이블하지만 같은 열을 사용했다. LAST 연합 후 '에 의한 주문은'여전히 작동하지 않았다. '에 의해 순서'에 사용되는 열에 대한 ALIAS를 사용하여 트릭을했다.

    Select Name, Address for Employee 
    Union
    Select Customer_Name, Address from Customer
    order by customer_name;   --Won't work
    

    솔루션은 사용 별칭 'User_Name을'입니다 그래서 :

    Select Name as User_Name, Address for Employee 
    Union
    Select Customer_Name as User_Name, Address from Customer
    order by User_Name; 
    
  8. ==============================

    8.이 사용할 수 :

    이 사용할 수 :

    Select id,name,age
    From Student
    Where age < 15
    Union ALL
    SELECT * FROM (Select id,name,age
    From Student
    Where Name like "%a%")
    
  9. from https://stackoverflow.com/questions/4715820/how-to-order-by-with-union-in-sql by cc-by-sa and MIT license