zhibo/verify_fans_count.sql
2026-01-03 15:32:31 +08:00

78 lines
2.3 KiB
SQL
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.

-- 快速验证粉丝数统计
-- 用于确认关注数据和统计逻辑是否正确
-- 1. 查看所有主播
SELECT
uid,
nickname,
phone,
is_streamer,
streamer_level
FROM eb_user
WHERE is_streamer = 1
ORDER BY uid;
-- 2. 查看所有关注记录
SELECT
id,
follower_id,
follower_nickname,
followed_id,
followed_nickname,
follow_status,
is_deleted,
create_time
FROM eb_follow_record
ORDER BY create_time DESC;
-- 3. 统计每个主播的粉丝数(正确的统计方式)
SELECT
u.uid as '主播ID',
u.nickname as '主播昵称',
COUNT(fr.id) as '粉丝数'
FROM eb_user u
LEFT JOIN eb_follow_record fr ON u.uid = fr.followed_id
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
WHERE u.is_streamer = 1
GROUP BY u.uid, u.nickname
ORDER BY COUNT(fr.id) DESC;
-- 4. 查看具体某个主播的粉丝列表(替换 1 为实际的主播ID
SELECT
fr.follower_id as '粉丝ID',
u.nickname as '粉丝昵称',
u.phone as '粉丝手机号',
fr.follow_status as '关注状态',
fr.create_time as '关注时间'
FROM eb_follow_record fr
LEFT JOIN eb_user u ON fr.follower_id = u.uid
WHERE fr.followed_id = 1 -- 替换为实际的主播ID
AND fr.follow_status IN ('1', '关注')
AND fr.is_deleted = 0
ORDER BY fr.create_time DESC;
-- 5. 检查关注状态字段的值分布
SELECT
follow_status as '状态值',
COUNT(*) as '记录数',
GROUP_CONCAT(DISTINCT id ORDER BY id LIMIT 5) as '示例ID'
FROM eb_follow_record
GROUP BY follow_status;
-- 6. 检查是否有被逻辑删除的记录
SELECT
is_deleted as '删除标记',
COUNT(*) as '记录数'
FROM eb_follow_record
GROUP BY is_deleted;
-- 7. 如果发现状态值不一致,可以执行以下修复(谨慎执行)
-- UPDATE eb_follow_record SET follow_status = '1' WHERE follow_status = '关注';
-- UPDATE eb_follow_record SET follow_status = '0' WHERE follow_status = '取消关注' OR follow_status = '0';
-- 8. 测试插入一条关注记录(用于测试)
-- 注意需要替换为实际存在的用户ID
-- INSERT INTO eb_follow_record (follower_id, follower_nickname, followed_id, followed_nickname, follow_status, is_deleted, create_time)
-- VALUES (2, '测试用户', 1, '测试主播', '1', 0, NOW());