Files
bl/help/base_sys_user_role去重.sql

38 lines
946 B
Go
Raw Normal View History

-- base_sys_user_role 角色授权去重
-- 只处理未软删除的有效授权软删除历史记录不参与去重
2026-04-27 00:51:28 +08:00
-- 保留每组有效 userId + roleId id 最小的一条删除其余重复记录
-- 1. 执行前查看重复数据
SELECT
"userId",
"roleId",
COUNT(*) AS cnt,
MIN(id) AS keep_id,
ARRAY_AGG(id ORDER BY id) AS ids
FROM base_sys_user_role
2026-04-27 00:51:28 +08:00
WHERE deleted_at IS NULL
GROUP BY "userId", "roleId"
HAVING COUNT(*) > 1
ORDER BY cnt DESC, "userId", "roleId";
-- 2. 删除重复数据
DELETE FROM base_sys_user_role a
USING base_sys_user_role b
WHERE a."userId" = b."userId"
AND a."roleId" = b."roleId"
2026-04-27 00:51:28 +08:00
AND a.deleted_at IS NULL
AND b.deleted_at IS NULL
AND a.id > b.id;
-- 3. 执行后复查应返回 0
SELECT
"userId",
"roleId",
COUNT(*) AS cnt
FROM base_sys_user_role
2026-04-27 00:51:28 +08:00
WHERE deleted_at IS NULL
GROUP BY "userId", "roleId"
HAVING COUNT(*) > 1;
2026-04-27 00:51:28 +08:00
-- 唯一约束统一在 约束类.sql 中维护