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

创建Netflix浪漫电影视图出现无关结果的问题排查请求

问题分析与解决方案

嘿,我来帮你搞定这个冗余结果的问题!咱们先拆解一下你写的视图创建语句,看看问题出在哪:

核心问题:未指定表连接条件导致笛卡尔积

你写的FROM DB2020_genre, DB2020_MOVIEINFO, DB2020_ON_NETFLIX这种多表写法,没有添加任何连接条件,数据库会默认做「笛卡尔积」——也就是把三个表的所有行两两组合,哪怕这些行根本没有关联(比如把《寄生虫》的信息和浪漫类型、Netflix的标记强行匹配),这就是冗余无关数据出现的根源。

虽然你用子查询过滤了Netflix上的电影ID,但因为没有连接主表的条件,数据库还是会把这些ID和其他表的所有行乱匹配,自然就出现了不该有的结果。

修正后的视图创建代码

咱们用显式JOIN语句来关联三个表,确保只有mov_id匹配的行才会被组合,同时精准过滤条件:

CREATE VIEW DB2020_romance_on_netflix AS
SELECT 
    mi.MOVIE_ID, 
    mi.title, 
    mi.plot, 
    g.genre, 
    n.on_netflix
FROM DB2020_MOVIEINFO mi
INNER JOIN DB2020_genre g 
    ON mi.MOVIE_ID = g.mov_id  -- 关联电影信息表和类型表
INNER JOIN DB2020_ON_NETFLIX n 
    ON g.mov_id = n.mov_id     -- 关联类型表和Netflix表
WHERE 
    g.genre = 'romance' 
    AND n.on_netflix = 'yes';

代码说明:

  • 用表别名(mi、g、n)让代码更简洁易读
  • INNER JOIN确保只有三个表中mov_id完全匹配的行才会被选中,彻底避免了笛卡尔积
  • WHERE子句精准筛选「浪漫类型」且「在Netflix上线」的电影
  • 不需要DISTINCT了——因为你的表结构有主键约束,正确的连接不会产生重复行

执行这个视图后,你只会得到符合要求的两部电影:《Before Sunset》和《Before Sunrise》,不会再出现无关内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:22:37