计算Varchar/Text列中重复姓名的方法在MySQL/任何SQL中
P粉464113078
P粉464113078 2023-09-10 23:59:22
0
1
568

所以,这是情况:我有一个看起来像这样的CSV文件:

show_id   title      cast
1         Batman     Robert Pattinson, Collin Farrel, Zoë Kravitz
2         Twilight   Robert Pattinson, Kristen Stewart
3         Ava        Jessica Chastain, Collin Farrel

我需要做的是在Python函数中打开这个CSV文件,对空格等进行一些处理。

然后我需要将其上传到SQL数据库中(任何我想要的,但我选择了MySQL),这没有问题。

问题

我的主要问题是,然后我需要(因为我的挑战要求如此)创建一个查询来计算演员在列表中的所有电影中出现的次数。所以,在这种情况下,查询应该显示如下:

演员               电影数量
Robert Pattinson    2
Collin Farrel       2
Zoë Kravitz         1
Kristen Stewart     1
Jessica Chastain    1

如您所见,我没有一个可以用LIKE或CONTAINS进行搜索的名称。那么,我该怎么办呢?因为在CSV中,每部电影的演员列表有超过一个演员,并且我将它们保存在数据库中的varchar或text类型中,所以每行都有多个演员。

或者我应该创建另一个表格,用演员和电影的外键来关联吗?或者在MySQL中无法做到这一点,但在其他SQL中可能可以做到吗?

P粉464113078
P粉464113078

全部回复(1)
P粉080643975

如果您正在寻找性能高效的东西,您应该将数据分割(总共创建3个表 - 电影,演员,演职员),并使用演职员将演员与电影连接起来,然后编写一些带有连接的简单SQL,如下所示:

Select actors.name as Actor, count(movies.title) as Amount_of_movies from actors,
inner join cast on cast.actor_id = actors.actor_id
inner join movies on movies.movie_id = cast.movie_id;

您还可以使用https://sebhastian.com/mysql-split-string/或使用psql / plsql和存储过程来完成另一种方式。如果可能的话,我会只是将数据分割。

干杯。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板