From 67fd22fff86085893e91114d1d39872b289163e8 Mon Sep 17 00:00:00 2001 From: ddCat <2695092045@qq.com> Date: Mon, 3 Aug 2026 10:24:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(database):=20=E6=8A=80=E8=83=BD=E5=BA=93=20?= =?UTF-8?q?-=20=E9=81=BF=E5=85=8D=E8=AE=A1=E6=95=B0=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=B1=A1=E6=9F=93=E7=83=AD=E9=97=A8=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/repository/skills.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/internal/repository/skills.go b/backend/internal/repository/skills.go index 369e99573..028c7e392 100644 --- a/backend/internal/repository/skills.go +++ b/backend/internal/repository/skills.go @@ -48,8 +48,9 @@ func (r *Repository) Skills(filter SkillListFilter) ([]model.Skill, int64, error if filter.Tag != "" { query = query.Where("skills.tag = ?", filter.Tag) } + // 用户状态按用户和技能唯一,列表 JOIN 不会重复;不要设置 DISTINCT,避免 GORM 将其带入 PostgreSQL 的热门排序查询。 var total int64 - if err := query.Distinct("skills.id").Count(&total).Error; err != nil { + if err := query.Count(&total).Error; err != nil { return nil, 0, err } order := "skills.sort_weight desc, skills.updated_at desc" @@ -60,7 +61,6 @@ func (r *Repository) Skills(filter SkillListFilter) ([]model.Skill, int64, error order = "(skills.initial_added_count + (SELECT COUNT(*) FROM user_skill_states metric_states WHERE metric_states.skill_id = skills.id AND metric_states.added = true)) desc, skills.updated_at desc" } var skills []model.Skill - // 用户状态按用户和技能唯一,列表 JOIN 不会重复;省略 DISTINCT 也避免 PostgreSQL 拒绝未出现在 SELECT 中的热门排序表达式。 err := query.Select("skills.*").Order(order).Limit(filter.Limit).Offset(filter.Offset).Find(&skills).Error return skills, total, err }