37 lines
856 B
SQL
37 lines
856 B
SQL
-- 清理观看历史重复数据
|
|
-- 保留每个用户对每个目标的最新一条记录
|
|
|
|
-- 1. 查看重复数据
|
|
SELECT
|
|
user_id,
|
|
target_type,
|
|
target_id,
|
|
COUNT(*) as count
|
|
FROM eb_view_history
|
|
GROUP BY user_id, target_type, target_id
|
|
HAVING COUNT(*) > 1;
|
|
|
|
-- 2. 删除重复数据,保留最新的一条
|
|
DELETE FROM eb_view_history
|
|
WHERE id NOT IN (
|
|
SELECT * FROM (
|
|
SELECT MAX(id) as id
|
|
FROM eb_view_history
|
|
GROUP BY user_id, target_type, target_id
|
|
) AS temp
|
|
);
|
|
|
|
-- 3. 验证清理结果
|
|
SELECT
|
|
user_id,
|
|
target_type,
|
|
target_id,
|
|
COUNT(*) as count
|
|
FROM eb_view_history
|
|
GROUP BY user_id, target_type, target_id
|
|
HAVING COUNT(*) > 1;
|
|
|
|
-- 4. 添加唯一索引,防止将来再次出现重复
|
|
ALTER TABLE eb_view_history
|
|
ADD UNIQUE INDEX idx_user_target (user_id, target_type, target_id);
|