여기에 문제가 있습니다. 테이블에 두 개의 열이 있는데, 각 그룹에 대해 동일한 순서가 있어야합니다. 이 가정을 계속하기 전에 기존 데이터에 대해 이것이 사실인지 확인하고 싶습니다.정렬 된 두 개의 SQL 쿼리에서 결과를 확인하는 방법은 무엇입니까?
일부 예제 데이터 : 당신이 볼 수 있듯이 내가 있다면
gid c1 c2
1 1 5
1 2 7
2 1 22
2 2 38
2 3 40
3 1 4
3 2 8
3 3 2
는, 결과는 동일 할 것이다
select * from table t where t.gid = 1 order by c1
사용하고
select * from table t where t.gid = 1 order by c2
동일하게 주문하기.
결과도 gid = 2와 일치합니다. 그러나 gid = 3으로 동일한 작업을 수행하면 순서가 더 이상 일치하지 않습니다. 이 경우 c2
을 주문하면 c1
으로 주문한 것과 다른 결과가 나올 수 있기 때문입니다.
전체 표를 확인하여 각 열의 순서가 gid
의 각 값에 대해 동일하게 적용되는지 확인하고 싶습니다. 오라클의 MINUS
은 하위 쿼리에서 order by
을 허용하지 않으므로 작동하지 않습니다. 때문에 MINUS
의 한계 작동하지 않습니다 내 첫 번째 시도는했다 : 그 대답에 도움이된다면 내가 오라클 11g를 사용하고
select gid, c1, c2 from table order by gid, c1, c2
minus
select gid, c1, c2 from table order by gid, c2, c1;
.
'빼기'는 하나의 세트가 다른 세트에 있는지 여부에만 관심이 있으므로 암시적인 '고유'를 수행하므로 작동하지 않습니다. – Ben