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

基于两张表对比编写SQL:筛选恐怖片导演创建结构一致的新表

实现方案

方案1:创建表并同步插入数据(兼容绝大多数数据库)

直接通过查询结果生成目标表,不需要提前建表:

CREATE TABLE HorrorDirector AS
SELECT DISTINCT d.Id, d.Name
FROM Director d
INNER JOIN Movie m 
  ON d.Name = m.DirectorName
WHERE m.Genre = 'Horror';

说明:DISTINCT 用于过滤重复记录,避免同一个导演拍摄多部恐怖片时出现重复条目。如果你的数据库不支持CREATE TABLE AS语法(比如老版本SQL Server),可以改用SELECT INTO写法:

SELECT DISTINCT d.Id, d.Name
INTO HorrorDirector
FROM Director d
INNER JOIN Movie m ON d.Name = m.DirectorName
WHERE m.Genre = 'Horror';

方案2:先建表再插入数据(可控性更高)

如果需要严格对齐Director表的字段属性、索引等配置,可以先创建空表再插入符合条件的数据:

第一步:创建空的HorrorDirector表

-- 通用标准SQL写法
CREATE TABLE HorrorDirector (
    Id int,
    Name varchar(255)
);

-- 快捷复制表结构写法(不同数据库略有差异)
-- MySQL/PostgreSQL:CREATE TABLE HorrorDirector LIKE Director;
-- SQL Server:SELECT * INTO HorrorDirector FROM Director WHERE 1=0;

第二步:插入符合要求的导演数据

推荐使用EXISTS写法,性能优于JOIN写法,大数据量下效率更高:

INSERT INTO HorrorDirector (Id, Name)
SELECT DISTINCT d.Id, d.Name
FROM Director d
WHERE EXISTS (
    SELECT 1 
    FROM Movie m 
    WHERE m.DirectorName = d.Name 
    AND m.Genre = 'Horror'
);

注意事项

  • 如果你的Movie表中恐怖片的Genre存储值为中文恐怖,需要把过滤条件里的'Horror'替换为实际存储的值
  • 关联条件依赖Director.Name和Movie.DirectorName完全匹配,如果存在同名不同人的情况,需要调整关联逻辑(比如增加DirectorId关联字段)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:03