在MySQL中匹配两列

时间:2010-02-07 17:06:16

标签: sql mysql matching

我对SQL很陌生,对于匹配表中两列的名称有疑问:

假设我想使用soundex()函数来匹配两个columsn。如果我使用此查询:

SELECT * FROM tablename WHERE SOUNDEX(column1)=SOUNDEX(column2);

如果该行中的两个名称匹配,则返回一行。现在我还想让column1和column2之间的名称匹配不在同一行。有没有办法自动化一个过程,其中column1中的每个名称都与column2中的每个名称进行比较?

谢谢:)

p.s。:如果有人能指出我的n-gram / bi-gram匹配算法的方向,那么一个菜鸟很容易实现到mysql中也很好。

2 个答案:

答案 0 :(得分:6)

如果您的表格有密钥,请说id,您可以尝试:

select A.column1, B.column2 
from tablename as A, tablename as B 
where (A.id != B.id) and (SOUNDEX(A.column1) = SOUNDEX(B.column2))

答案 1 :(得分:0)

您可以将该表连接到该关系本身:

SELECT * FROM tablename t1 JOIN tablename t2 
ON SOUNDEX(t1.column1) = SOUNDEX(t2.column2);
相关问题