UNION 을 사용하여 테이블 행 결합

UNION 을 사용하여 테이블 행 결합

이 단원에서는 UNION 절에 대해 이야기하려고합니다. UNION 절을 사용하여 두 개의 서로 다른 쿼리의 테이블 행을 하나의 결과로 결합 할 수 있습니다. 다른 테이블의 열을 결합하는 조인과 달리 연합은 다른 테이블의 행을 결합합니다. 다음은 UNION 이 어떻게 생겼는지에 대한 그림입니다.

Union

이 단원의 모든 예제는 Microsoft SQL Server Management Studio 및 AdventureWorks2012 데이터베이스를 기반으로합니다., 당신은 내 가이드를 사용하여 이러한 무료 도구를 사용하여 시작할 수 있습니다 Sql Server 를 사용하여 시작하기.

에서 SQL 이 문은 다음과 같

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

하기 위해 유니온 두 테이블에 있는 부부의 요구 사항:

  1. 의 열 번호를 동일해야 합니다 모두에 대한 선택의 문이 있습니다.
  2. 열은 순서대로 동일한 데이터 유형이어야합니다.

행이 결합되면 중복 행이 제거됩니다. 당신은 모두 선택 문의 결과에서 모든 행을 유지하려면 모든 키워드를 사용합니다.,

유니온 두 테이블

가신 목록을 제공하도록 요청받은 모든 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 문을 처리 한 다음 순서를 처리합니다.

경우에 대해 의심의 여지가 처리하기 위해 사용할 수 있습니다 괄호”()”순서를 제어의 평가 훨씬 좋아와 당신이 할 수있는 식입니다. 다음은 문장이 일반적으로 괄호로 보이는 것입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

도구 모음으로 건너뛰기