【发布时间】:2020-03-06 03:41:37
【问题描述】:
我有一个表education,其中有一列university。对于表中的每一行,我想从表中找到 3 所最相似的大学。
这是我的查询,可以找到与给定输入最相似的 3 所大学:
select distinct(university),
similarity(unaccent(lower(university)),
unaccent(lower('Boston university')))
from education
order by similarity(unaccent(lower(university)),
unaccent(lower('Boston university'))) desc
limit 3;
它工作正常。但是现在我想修改这个查询,以便为表中的每个现有大学获得两列和一行:第一列是大学名称,第二列是数据库中找到的三所最相似的大学(或如果它更容易 - 四个列,第一个是大学,接下来的 3 个是最相似的)。
这个语句应该是什么样子的?
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
标签: sql postgresql aggregate aggregate-functions