我的数据库是从一些彼此相似且共用相同数据行名称的数据表建立。原因是要在每个资源的数据之间执行比较。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
它工作得很好。但问题是有时我得到的数据比我需要的要多,我该如何限制它呢?(此外,为了得到更高的相似性名称,按相似性排序)。
1条答案
按热度按时间0aydgbwb1#
如果你想从三元组索引中获益,你需要使用运算符形式(%),而不是函数形式。然后您将对两个“列”排序,第一个列首先是完全匹配的列,第二个列将最相似的匹配放在后面并按顺序排列。然后使用LIMIT来进行限制。我假设您有一些WHERE条件来将其限制为table_a的一行。如果不是,那么你的问题就不是很好地组织了。2这个限制应该适用于什么?3每个 * 什么 * 应该限制在仅仅3个?