Files
bl/help/查询多余精灵.sql

71 lines
2.0 KiB
Go
Raw Normal View History

2026-02-12 12:43:28 +08:00
-- 验证查询宠物ID为273/274玩家拥有2条且非最早创建的记录只查不删
WITH player_pet_ranked AS (
SELECT
id, -- 记录主键ID
player_id,
(data->>'ID')::INT AS pet_id, -- 便于核对宠物ID
"createTime",
ROW_NUMBER() OVER (
PARTITION BY player_id
ORDER BY "createTime" ASC
) AS rn
FROM "player_pet"
WHERE (data->>'ID')::INT IN (273, 274) -- 改为273或274
)
SELECT *
FROM player_pet_ranked
WHERE rn > 1 -- rn>1是要删除的记录
AND player_id IN (
SELECT player_id
FROM player_pet_ranked
GROUP BY player_id
HAVING COUNT(*) >= 2
);
-- 核心删除保留每个玩家下273/274宠物中createTime最早的那条删除其余
WITH player_pet_ranked AS (
SELECT
id, -- 必须取主键ID用于精准删除
player_id,
ROW_NUMBER() OVER (
PARTITION BY player_id
ORDER BY "createTime" ASC
) AS rn
FROM "player_pet"
WHERE (data->>'ID')::INT IN (273, 274) -- 关键修改70273,274
)
DELETE FROM "player_pet"
WHERE id IN (
SELECT id
FROM player_pet_ranked
WHERE rn > 1 -- 删除非最早的记录
AND player_id IN (
SELECT player_id
FROM player_pet_ranked
GROUP BY player_id
HAVING COUNT(*) >= 2 -- 仅处理拥有2条273/274宠物的玩家
)
2026-02-12 15:45:54 +08:00
);
-- 查询player_id=136144宠物ID=303的所有未删除记录
SELECT
id, -- 记录主键ID
player_id,
(data->>'ID')::INT AS pet_id, -- 宠物ID便于核对
"createTime", -- 创建时间
deleted_at, -- 软删除字段确认是否未删除
data -- 完整的宠物数据可选如需查看全部信息
FROM "player_pet"
WHERE
player_id = 136144 -- 精准定位玩家ID=136144
AND (data->>'ID')::INT = 301 -- 精准定位宠物ID=303
AND deleted_at IS NULL; -- 仅查未被软删除的记录如需包含删除的可删除此条件