나는이 질문을 어떻게 표현할 지 잘 모르겠다. 그래서 여기에 세부 사항이있다. 두 비트 스트링 사이의 해밍 거리를 계산하기 위해 트릭을 사용하고 있습니다. ,PostgreSQL 하위 쿼리에 다른 열을 어떻게 추가합니까?
select length(replace(x::text,'0',''))
from (
select code # '000111101101001010' as x
from codeTable
) as foo
은 기본적으로는 두 문자열 사이의 XOR를 계산 모두 0을 누른 후 길이를 반환 제거 다음은 쿼리입니다. 이 기능은 두 개의 비트 문자열 사이의 해밍 거리와 기능적으로 동일합니다. 불행히도, 이것은 해밍 거리 만 반환하고 그 외에는 아무것도 반환하지 않습니다. codeTable 테이블에는 person_id라는 열이 있습니다. 최소 해밍 거리와 그와 관련된 ID를 반환 할 수 있기를 원합니다. 최소 해밍 거리를 반환하는 것은 충분히 간단합니다. '길이'부분 주위에 min()을 추가하십시오.
select min(length(replace(x::text,'0','')))
from (
select code # '000111101101001010' as x
from codeTable
) as foo
이 방법은 문제가 없지만 person_id가 아닌 해밍 거리 만 반환합니다. 해밍 거리와 관련된 person_id를 반환하기 위해 내가 무엇을해야하는지 알지 못합니다.
아무에게도이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
Brilliant! 나는 그것이 단순한 무엇인지 알았다. PostgreSQL을 처음 접했고 이런 식으로 구문을 알지 못했습니다. 'limit 1 '부분은 실제로 최소한의 두 개 또는 세 개의 해밍 거리가 필요할 때가 있으므로 일을 더 쉽게 만듭니다. 고마워요! –