문제

누군가가 내 자신의 질문에 대답하려는 첫 번째 시도입니다. Firebird를 사용하여 Union All을 사용하여 두 쿼리 결과를 결합한 다음 주어진 열의 결과 출력을 정렬하고 싶습니다. 같은 것 :

(select C1, C2, C3 from T1)
union all 
(select C1, C2, C3 from T2)
order by C3

괄호는 다른 데이터베이스에 대한 유효한 구문에서 나 왔으며, 모든 것을 유니온에 대한 인수 (테이블에서 작동하도록 정의 된 작업 - 즉 정렬되지 않은 레코드 세트) 개별적으로 주문하려고하지 않습니다. 그러나 나는이 구문을 Firebird에서 작동시킬 수 없었습니다. 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

SELECT C1, C2, C3
FROM (
    select C1, C2, C3 from T1
    union all 
    select C1, C2, C3 from T2
)
order by C3

다른 팁

필드 이름은 동일 할 필요가 없습니다. 그렇기 때문에 순서대로 필드 이름을 사용할 수 없습니다.
대신 필드 인덱스를 사용할 수 있습니다. 에서와 같이 :

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  

어때요 :

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2

적어도 최신 Firebird 버전에서는 별칭을 사용하는 대신 "숫자"로 주문하면 작동합니다.

Firebird 1.5에서 이것은 저에게 효과적입니다

create view V1 (C1, C2, C3) as
  select C1, C2, C3 from T1
  union all 
  select C1, C2, C3 from T2

그리고

select C1, C2, C3 from V1 order by C3

조회수로 모든 조합을 수행 한 다음 순서로 주문한 다음 주문을 사용하여 뷰에서 선택하십시오.

움직이는 order by 쿼리 꼬리 속에 있습니다 아니요 출력 Datagrid의 효과.

select * from (
    select first 1
        C1
    from T1
    order by id desc
)
union all
select * from (
    select first 1
        C1
    from T2
    order by id desc
)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top