首页 > 解决方案 > 如何使用 SQL 使用 WHERE/AND 条件创建新表?

问题描述

我需要创建一个新表,其中包含 Johnny Depp 和 Helena Bonham Caster 主演的电影的标题。我有这些表: 电影:(ID、标题和年份) 明星:(Movie_ID、Person_ID) 人物:(ID、姓名和出生年份)

CREATE TABLE johnny_helena (title TEXT);
INSERT INTO johnny_helena (title)
SELECT title
FROM movies
WHERE id IN (SELECT movie_id FROM stars WHERE person_id IN (SELECT id FROM people WHERE name = 'Johnny Depp') AND person_id IN (SELECT id FROM people WHERE name = 'Helena Bonham Caster'))

当我执行此代码时,我收到一个包含 0 行但应该是 6 行的表。我是新的 em SQL,我相信我犯了一个愚蠢的错误。那么,我该如何解决这个错误呢?谢谢。

标签: sqljoingroup-bysql-insertcreate-table

解决方案


一种选择使用连接和聚合:

INSERT INTO johnny_helena (title)
SELECT m.title
FROM movies m
INNER JOIN stars s ON s.movie_id = m.id
INNER JOIN people p ON p.id = s.person_id
WHERE p.name in ('Johnny Depp', 'Helena Bonham Caster')
GROUP BY m.id, m.title
HAVING COUNT(*) = 2

推荐阅读