帮看看这个sql怎么写 找出演员最高评分的电影

img


找出所有收藏为true演员,评分最高的一部电影。这个查询改怎么写?

比较麻烦的就是一列中有多个演员名称处理。
可以先将一列多个组合转为多行,然后再按照演员名称进行分组,求max(score)。查询条件加上收藏是否为true(子查询来实现)

演员字段是多个名字组合成的字符串?还是可以建多对多的关联表?

我只给出伪SQL
select 姓名,max(评分)
from 演员
left join 影片 on 影片.演员 like 演员.姓名
group by 演员.姓名

核心就是 模糊JOIN。

select XX.*,YY.filmnamne from (select name,max(score) maxscore from yanyuan a left join yingpian b on b.yanyuan like concat('%',a.name,'%') group by name)XX left join yingpian YY on XX.maxscore=YY.score and YY.yanyuan like concat('%',name,'%');

写一个分隔函数对演员字段进行按逗号分割(一列多行)就出来了。