SQL에서 all union과 order by를 사용하는 방법은 무엇입니까?
아래 sql 쿼리를 시도했습니다.
SELECT * FROM (SELECT *
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL
SELECT * FROM TABLE_B
다음과 같은 에러가 발생합니다.
TOP 또는 FOR XML을 지정하지 않는 한 ORDER BY 절은 뷰, 인라인 함수, 파생 테이블, 하위 쿼리 및 일반 테이블 식에서 사용할 수 없습니다.
나는 모두 함께 주문을 사용해야 한다.어떻게 하면 좋을까요?
SELECT *
FROM
(
SELECT * FROM TABLE_A
UNION ALL
SELECT * FROM TABLE_B
) dum
-- ORDER BY .....
모든 기록을 갖고 싶다면Table_A결과 목록 맨 위에 사용자 정의 값을 추가할 수 있습니다.이 값은 주문에 사용할 수 있습니다.
SELECT *
FROM
(
SELECT *, 1 sortby FROM TABLE_A
UNION ALL
SELECT *, 2 sortby FROM TABLE_B
) dum
ORDER BY sortby
괄호는 꼭 필요 없어요.직접 정렬할 수 있습니다.
SELECT *, 1 AS RN FROM TABLE_A
UNION ALL
SELECT *, 2 AS RN FROM TABLE_B
ORDER BY RN, COLUMN_1
OP의 직접적인 응답은 아니지만, OP의 ERROR 메시지에 대한 응답으로 이곳에 들어와야겠다고 생각했습니다. 그러면 당신은 완전히 다른 방향을 찾을 수 있습니다.
이 모든 답변은 레코드 세트가 검색되고 로트가 정렬되면 전체 주문 기준과 관련이 있습니다.
UNION의 각 부분을 개별적으로 주문하고 동일한 SELECT에 "가입"하고 싶다면 어떻게 해야 합니까?
SELECT pass1.* FROM
(SELECT TOP 1000 tblA.ID, tblA.CustomerName
FROM TABLE_A AS tblA ORDER BY 2) AS pass1
UNION ALL
SELECT pass2.* FROM
(SELECT TOP 1000 tblB.ID, tblB.CustomerName
FROM TABLE_B AS tblB ORDER BY 2) AS pass2
TOP 1000은 임의 번호입니다.필요한 모든 데이터를 캡처할 수 있을 만큼 큰 숫자를 사용합니다.
다음과 같은 작업을 수행해야 할 때가 있습니다.
표 1에서 상위 5를 정렬 기준으로 꺼냅니다.
다른 종류에 따라 표 2의 하단 5를 선택합니다.
이것들을 하나로 합칠 수 있습니다.
해결 방법
select * from (
-- top 5 records
select top 5 col1, col2, col3
from table1
group by col1, col2
order by col3 desc ) z
union all
select * from (
-- bottom 5 records
select top 5 col1, col2, col3
from table2
group by col1, col2
order by col3 ) z
이것이 내가 오류를 피할 수 있는 유일한 방법이었고 내게는 잘 작동했다.
SELECT * FROM (SELECT *
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL
SELECT * FROM TABLE_B
ORDER BY 2;
2는 여기서 열 번호입니다.오라클 SQL에서는 데이터를 정렬하는 데 사용할 열 번호를 사용할 수 있습니다.
이것으로 SELECT 문장은 해결되었습니다.
SELECT * FROM
(SELECT id,name FROM TABLE_A
UNION ALL
SELECT id,name FROM TABLE_B ) dum
order by dum.id , dum.name
여기서 id 및 name 컬럼은 테이블에서 사용할 수 있으며 컬럼을 사용할 수 있습니다.
괄호나 그 외의 것은 필요 없습니다.
SELECT *, id as TABLE_A_ID FROM TABLE_A
UNION ALL
SELECT *, id as TABLE_B_ID FROM TABLE_B
ORDER BY TABLE_A_ID, TABLE_B_ID
마지막 결합 후 주문 기준(ORDER BY)은 결합에 의해 결합된 두 데이터 세트에 모두 적용해야 합니다.
이하에 나타내는 솔루션은, 다음과 같습니다.
SELECT *,id AS sameColumn1 FROM Locations
UNION ALL
SELECT *,id AS sameColumn2 FROM Cities
ORDER BY sameColumn1,sameColumn2
select CONCAT(Name, '(',substr(occupation, 1, 1), ')') AS f1
from OCCUPATIONS
union
select temp.str AS f1 from
(select count(occupation) AS counts, occupation, concat('There are a total of ' ,count(occupation) ,' ', lower(occupation),'s.') As str from OCCUPATIONS group by occupation order by counts ASC, occupation ASC
) As temp
order by f1
언급URL : https://stackoverflow.com/questions/15470191/how-to-use-order-by-with-union-all-in-sql
'programing' 카테고리의 다른 글
| ClosedX를 사용한 Excel 파일 읽기ML (0) | 2023.04.20 |
|---|---|
| 이 주의를 수정하기 위해 github 워크플로우 작업에 대한 파일을 아티팩트에 아카이브하는 방법은 무엇입니까? (0) | 2023.04.20 |
| WPF: 동적으로 작성된 WPF 창에서 컨트롤을 동적으로 추가하는 방법 (0) | 2023.04.20 |
| 관찰 가능한 수집 <> 대리스트 <> (0) | 2023.04.20 |
| WPF의 심플한(내 생각에) 수평선? (0) | 2023.04.20 |