Files
bl/help/三主宠查询.sql
昔念 2f756c77bb
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
1
2026-02-12 12:43:28 +08:00

45 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 删除每个多余精灵组中除了最早创建的其余记录
WITH pet_group_mapping AS (
SELECT
id,
player_id,
-- 核心修正PARTITION BY中直接写分组逻辑
ROW_NUMBER() OVER (
PARTITION BY
player_id,
CASE -- 3个一组的分组逻辑
WHEN (data->>'ID')::INT BETWEEN 1 AND 3 THEN 'group_1_3'
WHEN (data->>'ID')::INT BETWEEN 4 AND 6 THEN 'group_4_6'
WHEN (data->>'ID')::INT BETWEEN 7 AND 9 THEN 'group_7_9'
WHEN (data->>'ID')::INT BETWEEN 301 AND 303 THEN 'group_301_303'
WHEN (data->>'ID')::INT BETWEEN 304 AND 306 THEN 'group_304_306'
WHEN (data->>'ID')::INT BETWEEN 307 AND 309 THEN 'group_307_309'
END
ORDER BY "createTime" ASC
) AS rn,
-- 定义pet_group用于筛选多余组
CASE
WHEN (data->>'ID')::INT BETWEEN 1 AND 3 THEN 'group_1_3'
WHEN (data->>'ID')::INT BETWEEN 4 AND 6 THEN 'group_4_6'
WHEN (data->>'ID')::INT BETWEEN 7 AND 9 THEN 'group_7_9'
WHEN (data->>'ID')::INT BETWEEN 301 AND 303 THEN 'group_301_303'
WHEN (data->>'ID')::INT BETWEEN 304 AND 306 THEN 'group_304_306'
WHEN (data->>'ID')::INT BETWEEN 307 AND 309 THEN 'group_307_309'
END AS pet_group
FROM "player_pet"
WHERE deleted_at IS NULL
),
excess_groups AS (
SELECT player_id, pet_group
FROM pet_group_mapping
WHERE pet_group IS NOT NULL
GROUP BY player_id, pet_group
HAVING COUNT(*) > 1
)
DELETE FROM "player_pet"
WHERE id IN (
SELECT pgm.id
FROM pet_group_mapping pgm
INNER JOIN excess_groups eg ON pgm.player_id = eg.player_id AND pgm.pet_group = eg.pet_group
WHERE pgm.rn > 1
);