sql - 如何使用 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,我相信我犯了一个愚蠢的错误。那么,我该如何解决这个错误呢?谢谢。
解决方案
一种选择使用连接和聚合:
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
推荐阅读
- react-native - X轴标签在react-native svg-charts中重叠
- microsoft-graph-api - 有没有办法使用图形 api 或不同的 api 从邮件中获取 Office 365 标签?
- c# - c#:删除一定大小的括号,如果存在,包括其内容
- php - 使用 PHP 在图像上写入文本时出现字体问题
- gcloud - How to protect Google Speech-To-Text API key if it's on client's computer?
- visual-studio-code - How to add context menu to the "outline" view in VsCode?
- android - 无法使用数组列表找到子元素
- python - 谷歌语音到文本长识别和标点符号的问题
- r - 有条件地提取和更改日期字段中的日期
- sql-server - SQL - 存储/搜索链接到行的列表的最佳方式