UNION 을 사용하여 테이블 행 결합
이 단원에서는 UNION 절에 대해 이야기하려고합니다. UNION 절을 사용하여 두 개의 서로 다른 쿼리의 테이블 행을 하나의 결과로 결합 할 수 있습니다. 다른 테이블의 열을 결합하는 조인과 달리 연합은 다른 테이블의 행을 결합합니다. 다음은 UNION 이 어떻게 생겼는지에 대한 그림입니다.
Union
이 단원의 모든 예제는 Microsoft SQL Server Management Studio 및 AdventureWorks2012 데이터베이스를 기반으로합니다., 당신은 내 가이드를 사용하여 이러한 무료 도구를 사용하여 시작할 수 있습니다 Sql Server 를 사용하여 시작하기.
에서 SQL 이 문은 다음과 같
SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2
하기 위해 유니온 두 테이블에 있는 부부의 요구 사항:
- 의 열 번호를 동일해야 합니다 모두에 대한 선택의 문이 있습니다.
- 열은 순서대로 동일한 데이터 유형이어야합니다.
행이 결합되면 중복 행이 제거됩니다. 당신은 모두 선택 문의 결과에서 모든 행을 유지하려면 모든 키워드를 사용합니다.,
예
유니온 두 테이블
가신 목록을 제공하도록 요청받은 모든 AdventureWorks2012 제품 카테고리와 하위 범주에 있습니다. 이를 위해 쓸 수 있는 두 가지 별도의 쿼리를 제공한 두 가지 별도의 결과,같은 두 가지 스프레드시트,또는 사용할 수 있습니다 UNION 절 중 하나를 제공합 결과:
SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S
이것에서 당신을 얻을 결합한 이름 목록은,하지만 당신은 알고 싶어하는 이름 범주에 비 하위 범주에 있습니다., 이렇게 추가할 수 있습니다 새 열을 나타내는 카테고리 유형:
SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S
유니온 대 Union All
사이의 차이를 동맹 및 동맹의 모든 것을 가진 연합 반환하는 독특한 설정의 행 동맹의 결과 반면에,동맹의 모든 수익 매니다.
예:
SELECT person.Address.CityFROM person.Address
19614 행을 반환합니다.
SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address
는 테이블 내의 고유 도시 이름의 수인 575 개의 행을 반환합니다. UNION 을 실행하면 모두 도시 이름의 전체 집합을 두 번 반환합니다.
SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address
39228 행을 반환합니다.,보시다시피 ALL 한정자를 사용하는 것과 큰 차이가 있습니다. 사용하지 않을 때 결과는 별개의 값입니다. 중복은 각 결과에서 행간에 제거 될뿐만 아니라 내부에서도 제거됩니다.
Union 세 가지 테이블
가 관리가 원하는 결합된 사람들의 목록,공급업체 및 저장소 이름으로 식별 소스입니다.이렇게하려면 세 개의 별도 쿼리를 만든 다음 union 절을 사용하여 함께 넣습니다. 그러면 목록을 주문할 것입니다.,
언뜻 생각할 수 있습니다 주문 절에만 적용되며 마지막 선택을 문지만,사실 그것에 적용되는 모든 결과에 의해 반환합니다. 데이터베이스 엔진은 먼저 모든 union 문을 처리 한 다음 순서를 처리합니다.
경우에 대해 의심의 여지가 처리하기 위해 사용할 수 있습니다 괄호”()”순서를 제어의 평가 훨씬 좋아와 당신이 할 수있는 식입니다. 다음은 문장이 일반적으로 괄호로 보이는 것입니다.