You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用count函数跨表统计数据为genre_stats表新增统计列

解决方案

步骤1:新增统计列

首先给genre_stats表添加用于存储出现次数的字段,示例字段名为movie_contain_count,类型设置为整数即可:

ALTER TABLE genre_stats ADD COLUMN movie_contain_count INT DEFAULT 0;

步骤2:统计并更新字段值

核心逻辑是通过FIND_IN_SET(MySQL环境下)匹配流派是否出现在电影的多流派拼接字符串中,再用COUNT计数后更新:

UPDATE genre_stats gs
SET gs.movie_contain_count = (
    SELECT COUNT(*)
    FROM movies m
    WHERE FIND_IN_SET(gs.genre, m.genre) > 0
);

如果使用PostgreSQL等没有FIND_IN_SET函数的数据库,可以替换为兼容的字符串匹配逻辑:

UPDATE genre_stats gs
SET movie_contain_count = (
    SELECT COUNT(*)
    FROM movies m
    WHERE (m.genre = gs.genre)
       OR (m.genre LIKE CONCAT(gs.genre, ',%'))
       OR (m.genre LIKE CONCAT('%,', gs.genre))
       OR (m.genre LIKE CONCAT('%,', gs.genre, ',%'))
);

验证建议

执行更新前可以先运行查询语句验证计数结果是否符合预期,避免误操作:

SELECT gs.genre, COUNT(*) AS count_check
FROM genre_stats gs
LEFT JOIN movies m ON FIND_IN_SET(gs.genre, m.genre) > 0
GROUP BY gs.genre;

注:以上逻辑统计的是包含对应流派的电影数量,如果需要统计流派的总出现次数(即单部电影有多个流派时每个流派各计数1次),需要先把movies表的genre字段拆分为单流派单行的结构再关联统计。

内容的提问来源于stack exchange,提问作者Ghandy kozman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:04