1
我不太確定如何解釋這個問題,所以這裏是細節。我正在使用一個技巧來計算兩個位串之間的漢明距離。這裏的查詢:如何添加另一列到PostgreSQL子查詢?
select length(replace(x::text,'0',''))
from (
select code # '000111101101001010' as x
from codeTable
) as foo
本質上,它計算兩個字符串之間的異或,刪除全部爲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。
有沒有人有任何想法如何做到這一點?
太棒了!我知道這很簡單。我是PostgreSQL的新手,並不確定以這種方式執行此操作的語法。 「限制1」部分實際上使事情變得更容易,因爲有時我需要最低的兩到三個漢明距離。非常感謝! –