Oracle 의 Union, Union All, Intersect, Minus
4585 단어 UNION ALL
다음 필드 와 데 이 터 를 포함 한 표 Student 가 있다 고 가정 합 니 다.
drop table student;
create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);
insert into student values(1,'Aaron',78);
insert into student values(2,'Bill',76);
insert into student values(3,'Cindy',89);
insert into student values(4,'Damon',90);
insert into student values(5,'Ella',73);
insert into student values(6,'Frado',61);
insert into student values(7,'Gill',99);
insert into student values(8,'Hellen',56);
insert into student values(9,'Ivan',93);
insert into student values(10,'Jay',90);
commit;
유 니 온 과 유 니 온 올 의 차이
select * from student where id < 4
union
select * from student where id > 2 and id < 6
결 과 는...
1 Aaron 78
2 Bill 76
3 Cindy 89
4 Damon 90
5 Ella 73
Union All 로 두 결과 집합 을 연결 하면 결 과 는 다음 과 같 습 니 다.
1 Aaron 78
2 Bill 76
3 Cindy 89
3 Cindy 89
4 Damon 90
5 Ella 73
유 니 온 과 유 니 온 올 의 차이 점 중 하 나 는 중복 결과 처리 에 있 음 을 알 수 있다.
다음 에 우 리 는 두 개의 하위 조회 순 서 를 조정 하여 바 꾸 었 다.
--Union
select * from student where id > 2 and id < 6
union
select * from student where id < 4
집행 결과 가 당신 이 기대 하 는 것 과 일치 하 는 지 봅 시다.
--Union All
select * from student where id > 2 and id < 6
union all
select * from student where id < 4
그럼 이 건 요?
이에 따라 두 번 째 는 정렬 처리 에 있다 는 것 을 알 수 있다.Union All 은 관련 순서에 따라 데 이 터 를 구성 하고 Union 은 일정한 규칙 에 따라 정렬 합 니 다.그럼 이 룰 은?우 리 는 조회 방식 을 바 꾸 어 보 자.
select score,id,name from student where id > 2 and id < 6
union
select score,id,name from student where id < 4
결 과 는 다음 과 같다.
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
우리 가 예상 한 것 과 일치 합 니 다. 필드 의 순서에 따라 정렬 할 것 입 니 다.이전에 우리 의 조 회 는 id, name, score 의 필드 순 서 를 바탕 으로 하 였 으 며, 결과 집합 은 id 에 따라 우선 순 위 를 매 길 것 입 니 다.현재 새로운 필드 순서 도 검색 결과 의 정렬 을 바 꾸 었 다.또한 주어진 필드 a, b, c... 의 순서에 따라 진행 되 는 orderby 입 니 다.즉, 결 과 는 order by a, b, c......................................................우 리 는 다음 조 회 를 본다.
select score,id,name from student where id > 2
union
select score,id,name from student where id < 4
결 과 는 다음 과 같다.
56 8 Hellen
61 6 Frado
73 5 Ella
76 2 Bill
78 1 Aaron
89 3 Cindy
90 4 Damon
90 10 Jay
93 9 Ivan
99 7 Gill
score 와 같은 기록 에 대해 다음 필드 id 에 따라 정렬 하 는 것 을 볼 수 있 습 니 다.만약 우리 가 스스로 정렬 을 제어 하고 싶다 면, orderby 로 지정 하면 되 는 것 입 니까?답 은 긍정 적 이지 만 쓰기 에 있어 서 주의해 야 할 부분 이 있다.
select score,id,name from student where id > 2 and id < 7
union
select score,id,name from student where id < 4
union
select score,id,name from student where id > 8 order by id desc
order by 자 구 는 마지막 결과 집합 에 써 야 하 며, 정렬 규칙 은 작업 후의 정렬 결 과 를 바 꿀 것 입 니 다.Union, Union All, Intersect, Minus 모두 유효 합 니 다.메모: 1. Union 은 필드 이름 이 다 르 지만 데이터 형식 이 같은 결과 집합 을 통합 할 수 있 습 니 다.= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Intersect 와 Minus 의 조작 은 Union 과 기본적으로 일치 합 니 다. 여기 서 함께 정리 하 겠 습 니 다. Union, 두 결과 집합 을 병합 합 니 다. 중복 줄 을 포함 하지 않 고 기본 규칙 의 정렬 을 합 니 다. Union All, 두 결과 집합 을 병합 작업 합 니 다. 중복 줄 을 포함 하여 정렬 하지 않 습 니 다. Intersect 는 두 결과 집합 을 교차 시 키 고 중복 줄 을 포함 하지 않 으 며 기본 규칙 의 정렬 을 합 니 다. Minus, 두 결과 집합 에 대해 서 는 중복 줄 을 포함 하지 않 고 기본 규칙 으로 정렬 합 니 다.첫 번 째 결과 집합 이 두 번 째 결과 에 집중 되 지 않 은 기록 은 마지막 결과 에 집중 적 으로 Order by 자구 로 정렬 방식 을 바 꿀 수 있다 는 뜻 이다.