-- 为 works 表添加 yesterday_* 字段(昨日数据快照) -- 执行前请先备份数据库 -- MySQL 不支持 IF NOT EXISTS,这里提供两种方式: -- 方式1:直接执行(如果列已存在会报错,可忽略或手动删除已存在的列) -- 方式2:使用存储过程检查后添加(见下方) USE media_manager; -- ========== 方式1:直接添加(推荐,如果列已存在会报错,可忽略报错继续执行) ========== -- 1. 播放数 ALTER TABLE works ADD COLUMN yesterday_play_count INT DEFAULT 0 COMMENT '昨日播放数'; -- 2. 点赞数 ALTER TABLE works ADD COLUMN yesterday_like_count INT DEFAULT 0 COMMENT '昨日点赞数'; -- 3. 评论数 ALTER TABLE works ADD COLUMN yesterday_comment_count INT DEFAULT 0 COMMENT '昨日评论数'; -- 4. 分享数 ALTER TABLE works ADD COLUMN yesterday_share_count INT DEFAULT 0 COMMENT '昨日分享数'; -- 5. 收藏数 ALTER TABLE works ADD COLUMN yesterday_collect_count INT DEFAULT 0 COMMENT '昨日收藏数'; -- 6. 推荐数(视频号) ALTER TABLE works ADD COLUMN yesterday_recommend_count INT DEFAULT 0 COMMENT '昨日推荐数'; -- 7. 涨粉数 ALTER TABLE works ADD COLUMN yesterday_fans_increase INT DEFAULT 0 COMMENT '昨日涨粉数'; -- 8. 关注数(视频号) ALTER TABLE works ADD COLUMN yesterday_follow_count INT DEFAULT 0 COMMENT '昨日关注数'; -- 9. 封面点击率 ALTER TABLE works ADD COLUMN yesterday_cover_click_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日封面点击率'; -- 10. 平均观看时长 ALTER TABLE works ADD COLUMN yesterday_avg_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日平均观看时长'; -- 11. 总观看时长 ALTER TABLE works ADD COLUMN yesterday_total_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日总观看时长'; -- 12. 完播率 ALTER TABLE works ADD COLUMN yesterday_completion_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日完播率'; -- 13. 2秒退出率 ALTER TABLE works ADD COLUMN yesterday_two_second_exit_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日2秒退出率'; -- 14. 5秒完播率 ALTER TABLE works ADD COLUMN yesterday_completion_rate_5s VARCHAR(50) DEFAULT '0' COMMENT '昨日5秒完播率'; -- 15. 曝光数 ALTER TABLE works ADD COLUMN yesterday_exposure_count INT DEFAULT 0 COMMENT '昨日曝光数'; -- ========== 方式2:使用存储过程安全添加(如果列已存在则跳过) ========== /* DELIMITER $$ DROP PROCEDURE IF EXISTS add_column_if_not_exists$$ CREATE PROCEDURE add_column_if_not_exists( IN table_name VARCHAR(255), IN column_name VARCHAR(255), IN column_definition TEXT ) BEGIN DECLARE column_exists INT DEFAULT 0; SELECT COUNT(*) INTO column_exists FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = table_name AND COLUMN_NAME = column_name; IF column_exists = 0 THEN SET @sql = CONCAT('ALTER TABLE ', table_name, ' ADD COLUMN ', column_name, ' ', column_definition); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END$$ DELIMITER ; CALL add_column_if_not_exists('works', 'yesterday_play_count', 'INT DEFAULT 0 COMMENT ''昨日播放数'''); CALL add_column_if_not_exists('works', 'yesterday_like_count', 'INT DEFAULT 0 COMMENT ''昨日点赞数'''); CALL add_column_if_not_exists('works', 'yesterday_comment_count', 'INT DEFAULT 0 COMMENT ''昨日评论数'''); CALL add_column_if_not_exists('works', 'yesterday_share_count', 'INT DEFAULT 0 COMMENT ''昨日分享数'''); CALL add_column_if_not_exists('works', 'yesterday_collect_count', 'INT DEFAULT 0 COMMENT ''昨日收藏数'''); CALL add_column_if_not_exists('works', 'yesterday_recommend_count', 'INT DEFAULT 0 COMMENT ''昨日推荐数'''); CALL add_column_if_not_exists('works', 'yesterday_fans_increase', 'INT DEFAULT 0 COMMENT ''昨日涨粉数'''); CALL add_column_if_not_exists('works', 'yesterday_follow_count', 'INT DEFAULT 0 COMMENT ''昨日关注数'''); CALL add_column_if_not_exists('works', 'yesterday_cover_click_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日封面点击率'''); CALL add_column_if_not_exists('works', 'yesterday_avg_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日平均观看时长'''); CALL add_column_if_not_exists('works', 'yesterday_total_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日总观看时长'''); CALL add_column_if_not_exists('works', 'yesterday_completion_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日完播率'''); CALL add_column_if_not_exists('works', 'yesterday_two_second_exit_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日2秒退出率'''); CALL add_column_if_not_exists('works', 'yesterday_completion_rate_5s', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日5秒完播率'''); CALL add_column_if_not_exists('works', 'yesterday_exposure_count', 'INT DEFAULT 0 COMMENT ''昨日曝光数'''); DROP PROCEDURE IF EXISTS add_column_if_not_exists; */