나는 두 개의 하이브 테이블 (t1과 t2)을 비교하고 싶습니다. 두 번째 테이블에는 첫 번째 테이블에없는 다섯 개의 추가 열이 있습니다. 5 개의 분리 된 필드가 아닌 다른 두 테이블은 동일해야합니다. 이것을 확인하기 위해 쿼리를 작성하려고합니다. 다음은 내가 지금까지 가지고있는 것입니다 :비슷한 하이브 테이블 비교
SELECT * FROM t1
UNION ALL
select * from t2
GROUP BY some_value
HAVING count(*) == 2
테이블이 동일하면 0 레코드를 반환해야합니다. 그러나 두 번째 테이블에는 5 개의 추가 필드가 있으므로이를 반영하기 위해 두 번째 select 문을 변경해야합니다.
SELECT * FROM t1
UNION ALL
select field1, field2, field3,...,fieldn from t2
GROUP BY some_value
HAVING count(*) == 2
나는 주위를 둘러 보았다하고 난 더 select * EXCEPT
구문이없는 알고 있지만,이 쿼리를 할 수있는 방법은 명시 적으로하지 않고있다 :이 약 60 열 이름은 내가 정말이처럼 쓰기 싫어하다 최종 결과에 포함시키려는 각 열의 이름을 지정 하시겠습니까?
첫 번째 쿼리의 레코드 중 일부가 count == 2가 아니겠습니까? 표가 동일하면 각 행이 복제됩니다. UNION ALL은 중복을 제거하지 않습니다. – Michael
네, 맞습니다. 결과에는 원래 행 수와 동일한 개수가 있어야합니다. – nLee