You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postgres多对多关联表中查询前5个关联最多的item_tag_id

Postgres 多对多关联表查询关联次数最多的前5个item_tag_id方案

假设你的多对多关联表实际表名为item_tag_relation,替换为你自己的表名即可直接使用以下语句:

基础查询方案(取前5条,并列结果会截断)

SELECT item_tag_id, COUNT(*) AS relation_count
FROM item_tag_relation
GROUP BY item_tag_id
ORDER BY relation_count DESC
LIMIT 5;

语句说明:

  • GROUP BY item_tag_id 按标签ID分组,将同一个标签的所有关联记录聚合到同一组
  • COUNT(*) 统计每个标签对应的关联记录总次数,别名为relation_count
  • ORDER BY relation_count DESC 按关联次数从高到低排序
  • LIMIT 5 仅返回排序后的前5条结果

用你提供的示例数据执行该语句,得到的结果如下:

item_tag_idrelation_count
32
22
11

进阶查询方案(保留并列排名的所有结果)

如果第5名存在多个关联次数相同的标签,希望把所有并列的结果都返回,可以使用RANK窗口函数实现:

WITH tag_count_stat AS (
    SELECT 
        item_tag_id,
        COUNT(*) AS relation_count,
        RANK() OVER (ORDER BY COUNT(*) DESC) AS tag_rank
    FROM item_tag_relation
    GROUP BY item_tag_id
)
SELECT item_tag_id, relation_count
FROM tag_count_stat
WHERE tag_rank <= 5;

内容的提问来源于stack exchange,提问作者Waruna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:09:02