具有字符串相似规则的连接表的SQL限制



我的数据库是从一些彼此相似并共享相同列名的表构建的。原因是为了对来自每个资源的数据进行比较。

table_A and table_B: id, product_id, capacitor_name, ressitance

很容易通过product_id连接表并查看比较,但是我需要比较product_id之间的数据,如果存在于两个表中,如果不是,我想通过名称相似性进行比较,如果相似性限制了最多3个结果的结果。

大多数情况下,名字是不相等的,这就是为什么我使用相似性。

SELECT * FROM table_a ta 
JOIN table_b tb 
ON 
ta.product_id = tb.product_id 
OR
similarity(ta.name,tb.name) > 0.8

很好。但问题是有时我得到的数据比我需要的多,我怎么限制它?(而且,为了得到相似度更高的名字,还要按相似度排序)。

如果希望从三元组索引中获益,则需要使用操作符形式(%),而不是函数形式。然后,您将在两个"列"上排序,第一列首先是精确匹配,第二列将最相似的匹配放在后面并按顺序排列。用LIMIT求极限。我假设你有一些WHERE条件将其限制为table_a的一行。如果不是,那么你的问题就不是很好。这个极限应该适用于什么?每个什么应该限制在3?

SELECT * FROM table_a ta 
JOIN table_b tb 
ON 
ta.product_id = tb.product_id 
OR
ta.name % tb.name
WHERE ta.id=$1
ORDER BY ta.product_id = tb.product_id desc, similarity(ta.name,tb.name) desc
LIMIT 3

最新更新