왼쪽에있는 내 테이블의 모든 행은 오른쪽 테이블에서 하나의 일치 항목 만 가져야합니다 (오른쪽 테이블은 모든 행이있는 마스터 테이블이고 왼쪽 테이블은이 행의 하위 집합 만 포함). 각 테이블의 행의 시간 소인은 정확히 일치하지 않지만 대개 서로 1 초 내에 있습니다. 따라서 테이블에 가입하면 다음을 사용해야합니다.INNER JOIN이 (가) 여러 경기를 반환하지 않게하는 방법은 무엇입니까?
FROM left_table INNER JOIN right_table
ON left_table.timestamp BETWEEN right_table.timestamp - .00015 AND right_table.timestamp + .00015
--This is approximately a 2 second wide range since this is a DATETIME field
AND left_table.name = right_table.name
AND ........
다른 모든 기준은 정확하게 일치합니다. 이 문제를 해결할 방법이 있습니까?
대개의 경우 1 행만 반환 할 수 있지만 두 행이 동일한 경우 두 행이 모두 반환됩니다.
당신은 독특한 시도 할 수, 또는 TOP 1 –
을 방지하는 좋은 방법입니다, 당신은 right_table.timestamp 간의 left_table.timestamp ON 을 의미 않았다 -. 00015 AND right_table.timestamp + .00015 – David
내가 그럴 것 같아. 방금 문제를 재평가하고 "DISTINCT"를 사용하는 한 여러 개의 결과가 반환되는 것이 좋다고 생각합니다. 시간 범위가 너무 좁아서 조인에서 필요한 기준에 적합합니다. 감사! – eek142