【问题标题】:How to set LIMIT on secondary data?如何对二级数据设置 LIMIT?
【发布时间】:2023-01-17 01:00:15
【问题描述】:

按相似度返回前 10 个结果的简单查询。

SELECT name, similarity(name, 'some text') as sm
FROM table
WHERE name % 'some text' 
ORDER  BY sm DESC
LIMIT 10

但是有一刻我需要扩展返回数据的limit。 例如,假设我在数据库some text20 rows 文本some text 2 中有11 rows 文本

这些文本相似,查询执行后结果只有 10 行 some text

如何返回所有重复的行,然后返回一些 LIMIT 数据?

预期结果将是

11 rows带有“一些文字” 之后 10 rows 在这种情况下具有其他相似性 'some text 2'

所有返回结果21

如何做到这一点?

【问题讨论】:

  • 您应该将样本数据添加到您的问题中。

标签: postgresql pg-trgm


【解决方案1】:

如果我理解正确的话,你需要使用联盟:

-- Unlimited output of 'some text'
select
  name
, similarity(name, 'some text') as sm
from table
where name % 'some text'
-----
union
-----
select
  sub.name
, sub.sm
from ( -- Limited output of 'some text 2'
       select
         name
       , similarity(name, 'some text 2') as sm
       from table
       where name % 'some text 2'
       limit 10
     ) sub
order by
  sm desc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多