This commit is contained in:
45
help/三主宠查询.sql
Normal file
45
help/三主宠查询.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
-- 删除:每个多余精灵组中除了最早创建的其余记录
|
||||
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
|
||||
);
|
||||
Reference in New Issue
Block a user