[SQL] SQL 쿼리 - UNION에서 주문을 사용하여
SQLSQL 쿼리 - UNION에서 주문을 사용하여
어떻게 프로그래밍 종류의 두 테이블에서 데이터를 통합 쿼리 당겨 수 있습니까? 예를 들어,
SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1
예외가 발생합니다
참고 :이 MS 액세스 Jet 데이터베이스 엔진에서 시도되고있다
해결법
-
==============================
1.때때로 당신은 UNION과 결합 될 필요가있는 각 섹션에 의해 ORDER이 필요합니다.
때때로 당신은 UNION과 결합 될 필요가있는 각 섹션에 의해 ORDER이 필요합니다.
이 경우
SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2
-
==============================
2.
SELECT field1 FROM table1 UNION SELECT field1 FROM table2 ORDER BY field1
-
==============================
3.나는이 설명의 좋은 일을 생각한다.
나는이 설명의 좋은 일을 생각한다.
다음은 ORDER BY 절을 사용하는 UNION 쿼리입니다 :
select supplier_id, supplier_name from suppliers where supplier_id > 2000 UNION select company_id, company_name from companies where company_id > 1000 ORDER BY 2;
열 이름 두 '선택'문장 사이에서 다르기 때문에, 상기 결과 집합 내의 그 위치에 의해 ORDER BY 절에서 열을 참조하는 것이 더 유리하다.
이 예에서 우리는 "2 ORDER"에 의해 표시로, 오름차순으로 supplier_name / COMPANY_NAME에 의한 결과를 분류했습니다.
supplier_name / COMPANY_NAME 필드는에 위치 # 2에 세트를 초래한다.
여기에서 촬영 : http://www.techonthenet.com/sql/union.php
-
==============================
4.구체적인 예를 사용 :
구체적인 예를 사용 :
SELECT name FROM Folders ORDER BY name UNION SELECT name FROM Files ORDER BY name
파일 :
name ============================= RTS.exe thiny1.etl thing2.elt f.txt tcpdump_trial_license (1).zip
폴더 :
name ============================ Contacts Desktop Downloads Links Favorites My Documents
원하는 출력 : (제 1의 결과, 즉 제 첫번째 폴더 선택)
Contacts Desktop Downloads Favorites Links My Documents f.txt RTMS.exe tcpdump_trial_license (1).zip thiny1.etl thing2.elt
SQL은 원하는 결과를 달성하기 위해 :
SELECT name FROM ( SELECT 1 AS rank, name FROM Folders UNION SELECT 2 AS rank, name FROM Files) dt ORDER BY rank, name
-
==============================
5.여기에 Northwind를 2007 예입니다 :
여기에 Northwind를 2007 예입니다 :
SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity] FROM [Product Orders] UNION SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] FROM [Product Purchases] ORDER BY [Order Date] DESC;
ORDER BY 절은 당신이 모든 unioning를 완료 한 후, 마지막 문이어야합니다. 당신은 노조 여러 세트 함께, 다음, 마지막으로 설정 한 후 ORDER BY 절을 넣을 수 있습니다.
-
==============================
6.
(SELECT table1.field1 FROM table1 UNION SELECT table2.field1 FROM table2) ORDER BY field1
작업? 세트를 생각 기억하십시오. 당신이 조합을 사용하고 다음에 작업을 수행하려는 세트를 가져옵니다.
-
==============================
7.
SELECT table1Column1 as col1,table1Column2 as col2 FROM table1 UNION ( SELECT table2Column1 as col1, table1Column2 as col2 FROM table2 ) ORDER BY col1 ASC
-
==============================
8.
SELECT field1 FROM ( SELECT field1 FROM table1 UNION SELECT field1 FROM table2 ) AS TBL ORDER BY TBL.field1
(사용 ALIAS)
-
==============================
9.이것은 내가 본 어리석은 일이지만, 그것을 작동, 당신은 결과를 주장 할 수 없습니다.
이것은 내가 본 어리석은 일이지만, 그것을 작동, 당신은 결과를 주장 할 수 없습니다.
SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) derivedTable
파생 테이블의 내부는 자체적으로 실행되지 않습니다,하지만 파생 테이블은 완벽하게 잘 작동한다. 나는 SS 2000, SS 2005 SS 2008 R2, 모든 세 가지 작업에서이 작업을 시도했습니다.
-
==============================
10.이것은 수행하는 방법이다
이것은 수행하는 방법이다
select * from (select top 100 percent pointx, pointy from point where pointtype = 1 order by pointy) A union all select * from (select top 100 percent pointx, pointy from point where pointtype = 2 order by pointy desc) B
-
==============================
11.나는이 질문에 대답 두 개의 서로 다른 패턴을 건너 온이 댓글 섹션을 찾아. 안타깝게도 SQL 2012, 두 번째 패턴은, 그래서 여기 내 "작업 주변에"하지 작업의 않습니다
나는이 질문에 대답 두 개의 서로 다른 패턴을 건너 온이 댓글 섹션을 찾아. 안타깝게도 SQL 2012, 두 번째 패턴은, 그래서 여기 내 "작업 주변에"하지 작업의 않습니다
이 발생할 수있는 가장 쉬운 경우이다. 많은 사용자가 지적처럼, 당신이 정말로 할 필요는 쿼리의 끝에 주문을 추가 할 것입니다
SELECT a FROM table1 UNION SELECT a FROM table2 ORDER BY field1
또는
SELECT a FROM table1 ORDER BY field1 UNION SELECT a FROM table2 ORDER BY field1
실제로 까다로운 얻는 곳 여기입니다. SQL 2012을 사용하여, 나는 상단 게시물을 시도하고 일을하지 않습니다.
SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2
주석의 추천에 따라이 시도
SELECT * FROM ( SELECT TOP 100 PERCENT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT TOP 100 PERCENT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2
이 코드는 컴파일을했다하지만 DUMMY_ALIAS1 및 DUMMY_ALIAS2는 주문이 사용할 수 없게 Select 문에 설립 우선합니다.
내가 노동 조합을 사용하는 대신 쿼리가 개별적 한 다음 처리 실행할 제작되지 않은 내가이 일 것을 생각할 수있는 유일한 솔루션입니다. 그러니까 기본적으로, 노조 사용하지 않는 당신이 주문을 할 때
-
==============================
12.순서를 사용하여 개별적으로 각각의 부분 집합은 순서를 얻을 수 있지만, 두 개의 테이블 연합 원하는 것이 무엇 전체 세트하지한다.
순서를 사용하여 개별적으로 각각의 부분 집합은 순서를 얻을 수 있지만, 두 개의 테이블 연합 원하는 것이 무엇 전체 세트하지한다.
당신은 하나 개의 명령 세트가이 같은 것을 사용해야합니다 :
SELECT TOP (100) PERCENT field1, field2, field3, field4, field5 FROM (SELECT table1.field1, table1.field2, table1.field3, table1.field4, table1.field5 FROM table1 UNION ALL SELECT table2.field1, table2.field2, table2.field3, table2.field4, table2.field5 FROM table2) AS unitedTables ORDER BY field5 DESC
-
==============================
13.두 번째 표는 ORDER BY 절에서 테이블 이름을 포함 할 수 없습니다.
두 번째 표는 ORDER BY 절에서 테이블 이름을 포함 할 수 없습니다.
그래서...
SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY field1
예외가 발생하지 않습니다
-
==============================
14.필요한 경우 내부 정렬을 유지하기 :
필요한 경우 내부 정렬을 유지하기 :
SELECT 1 as type, field1 FROM table1 UNION SELECT 2 as type, field1 FROM table2 ORDER BY type, field1
-
==============================
15.
(SELECT FIELD1 AS NEWFIELD FROM TABLE1 ORDER BY FIELD1) UNION (SELECT FIELD2 FROM TABLE2 ORDER BY FIELD2) UNION (SELECT FIELD3 FROM TABLE3 ORDER BY FIELD3) ORDER BY NEWFIELD
이 시도. 그것은 나를 위해 일했습니다.
-
==============================
16.SQL Server의 경우 2014 / 2012 / 기타 (체크인하지 않음)
SQL Server의 경우 2014 / 2012 / 기타 (체크인하지 않음)
SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) as DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) as DUMMY_ALIAS2
from https://stackoverflow.com/questions/213851/sql-query-using-order-by-in-union by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 더 집계 함수는 SELECT 절에 존재하지 않는 GROUP BY 동작 (0) | 2020.03.25 |
---|---|
[SQL] 절은 SQL에 문제가 어디에 순서합니까? (0) | 2020.03.25 |
[SQL] SQL Server에서 실제 일대일 관계를 만드는 방법 (0) | 2020.03.25 |
[SQL] 날짜 범위 사이의 날짜를 생성 (0) | 2020.03.25 |
[SQL] 차이를하는 SQL JOIN (0) | 2020.03.25 |