Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL多pg_trgm相似性分数子查询_Sql_Postgresql_Similarity - Fatal编程技术网

PostgreSQL多pg_trgm相似性分数子查询

PostgreSQL多pg_trgm相似性分数子查询,sql,postgresql,similarity,Sql,Postgresql,Similarity,我对SQL是相当陌生的,我正在努力处理一个子查询。我有一张像这样的桌子: sss | mm | sid ------------------+----+----- IBM LTD | | 003 I.B.M. | | 003 A.BM LTD | | 004 IMB LTD | | 004 IMB UK | | 005 IBMUK LTD

我对SQL是相当陌生的,我正在努力处理一个子查询。我有一张像这样的桌子:

      sss        | mm | sid 
------------------+----+-----
IBM LTD          |    | 003
I.B.M.           |    | 003
A.BM LTD         |    | 004
IMB LTD          |    | 004
IMB UK           |    | 005
IBMUK LTD        |    | 006
IBMUKLTD         |    | 007
IBM LIMITED      |    | 008
IBM U.K.         |    | 008
IBM U.K. LIMITED |    | 009
I.B.M UK LTD     | 1  | 001
IBM              | 1  | 001
IBM UK           | 1  | 001
IBM UK LTD       | 1  | 001
mm
列中带有
1
的行是已手动匹配且ID正确的行。我想使用
相似性
函数尝试查找与已手动匹配的记录的接近匹配项

我知道通常在from语句中放置子查询,但我不能使用
相似性
函数,但我不确定如何执行,这就是我想做的:

SELECT 
    sss, 
    similarity(sss, select(sss from tusm where mm = 1) as match_score)
from 
    tusm 
where 
    mm is null and
    where match_score >= 0.5
;

你这里有一些问题。您不能在where子句中使用列别名,您试图在括号的错误一侧指定列别名,您不能向
相似性的第二个参数
提供一个集合,并且您通常在几个地方损坏了语法

要克服
相似性
无法处理集合,请执行自联接:

select a.sss as a_sss, b.sss as b_sss, similarity(a.sss, b.sss) as score from
tusm a, tusm b 
where a.mm is null and b.mm = 1 and 
similarity(a.sss, b.sss)  > 0.5;
给予

   a_sss   |   b_sss    |  score
-----------+------------+----------
 IBM LTD   | IBM UK LTD | 0.727273
 IBMUK LTD | IBM UK LTD | 0.615385

如果表格变大,则很难使其正常运行。

说明相似性应定义为
相似性(列“word”)
。看起来您正在尝试进行
相似性(列、查询)
。要使查询工作,我认为必须从子查询返回单个字符串。如果我误解了你的问题,请告诉我。谢谢。重新。性能方面,我正在建立硬链接,而不是实时搜索,所以谢天谢地,时间并不紧迫。