테이블의 열에있는 모든 고유 한 값 조합을 찾아야합니다. 예를 들어, 컬럼 값 1,2,3,4,5의 경우. 결과가 [1,2], [1,3], [1,4], [1,5], [2,1], [2,3] 등이되기를 원합니다.고유 한 값의 조합 테이블의 열
감사합니다. 포인터를 사용하여 값의 조합을 찾기 위해 쿼리를 구성합니다.
감사
cross join
테이블의 열에있는 모든 고유 한 값 조합을 찾아야합니다. 예를 들어, 컬럼 값 1,2,3,4,5의 경우. 결과가 [1,2], [1,3], [1,4], [1,5], [2,1], [2,3] 등이되기를 원합니다.고유 한 값의 조합 테이블의 열
감사합니다. 포인터를 사용하여 값의 조합을 찾기 위해 쿼리를 구성합니다.
감사
cross join
는 유용 할 수 있습니다. http://www.sqlfiddle.com/#!12/59af5/1이
은 ANSI SQL 구문은 CROSS JOIN
연산자를 사용합니다 :
create table val(x int);
insert into val values(1),(2),(3),(4),(5);
SELECT a.x a, b.x b
FROM val a
CROSS JOIN val b
WHERE a.x <> b.x
ORDER BY a,b;
대부분의 DBMS 시스템에서 작동해야 CROSS JOIN
없이이 쿼리의 또 다른 형태지만, ANSI 형식이 권장
이 데모를 참조하십시오 선명도 :
SELECT a.x a, b.x b
FROM val a, val b
WHERE a.x <> b.x
ORDER BY a,b;
큰 데이터 세트에 대한 교차 조인은 1000 -> 1.000.000 행에 대해 100x100 = 10.000 행을 생성하는 100 개의 값에 대해 데이터베이스 성능을 저하시킬 수 있음에 유의하십시오.
상수 키 값을 추가하는 하위 선택을 사용하여 BigQuery에서 크로스 조인을 수행 한 다음 해당 상수 값에 합류 할 수 있습니다. 예를 들어
가 여기 크로스 조인 계산하는 쿼리 {1, 2, 3} 및 {2, 4, 6}SELECT t1.num as first, t2.num as second
FROM (
SELECT num, 1 as key
FROM (
SELECT 1 as num), (
SELECT 2 as num), (
SELECT 3 as num)) as t1
JOIN (
SELECT num, 1 as key
FROM (
SELECT 2 as num), (
SELECT 4 as num), (
SELECT 6 as num)) as t2
ON t1.key = t2.key
WHERE t1.num <> t2.num
참고 이것은 BigQuery에 "트릭"에 사용 두 개의 입력 테이블을 작성하십시오. 기존 테이블로이 작업을 수행했다면 다음과 같이 보입니다.
SELECT t1.num as first, t2.num as second
FROM (
SELECT foo as num, 1 as key
FROM [my_dataset.my_table]) as t1
JOIN (
SELECT foo as num, 1 as key
FROM [my_dataset.my_table]) as t2
ON t1.key = t2.key
WHERE t1.num <> t2.num
답장을 보내 주셔서 감사합니다. kordirko. 나는 구글 bigquery에서 이것을 할 길을 찾고있다. – sunil