Condizer duas colunas no MySQL
Pergunta
Eu sou muito novo para SQL e tenho uma pergunta sobre nomes correspondentes de duas colunas localizadas dentro de uma tabela:
Vamos dizer que eu quero usar a função soundex () para combinar dois columsn. Se eu usar esta consulta:
SELECT * FROM tablename WHERE SOUNDEX(column1)=SOUNDEX(column2);
a linha é retornada se os dois nomes dentro desse jogo linha. Agora eu também gostaria de obter esses jogos de nomes entre column1 e column2 que não estão na mesma linha. Existe uma maneira de automatizar um procedimento pelo qual cada nome column1 é comparado com todos os nomes de column2?
Obrigado:)
P.S .: Se alguém pudesse me aponte na direção de um algoritmo de correspondência n-grama / bi-grama que é fácil para um noob de implementar em mysql que seria bom também.
Solução
Se a tabela tem uma chave, digamos id
, você pode tentar:
select A.column1, B.column2
from tablename as A, tablename as B
where (A.id != B.id) and (SOUNDEX(A.column1) = SOUNDEX(B.column2))
Outras dicas
Você pode participar da tabela a ela mesma em que o relacionamento como tal:
SELECT * FROM tablename t1 JOIN tablename t2
ON SOUNDEX(t1.column1) = SOUNDEX(t2.column2);