mysql - 具有多个条件的 SQL WHERE 语句
问题描述
我有一个电影、演职员表、人物和角色表(如下)我想找到既是演员又是导演的人的名字。
电影(表)
id int
title
学分(表)
id int
movie_id int
person_id int
role_id int
人(表)
id int
name
角色(表)
id int
role (Actor, Director)
这就是我所做的:
SELECT p.name, r.role, m.role_id
FROM mtm_credits m
JOIN people p ON p.id = m.person_id
JOIN roles r ON r.id = m.role_id
WHERE role = 'Director' AND role = 'Actor';
但是,我得到 0 个结果。任何建议表示赞赏。
解决方案
问题是结果表中没有单行的“角色”既是“导演”又是“演员”,因为“角色”只能是一个值。
首先考虑一下您的表在加入后的样子是很有用的。在这种情况下,您有:
credits.id, credits.movie_id, credits.person_id, credits.role_id, person.id, person.name, role.id, role.name
现在一个既是导演又是演员的人将在此表中有两行,如下所示:
| credits.id | credits.movie_id | credits.person_id | credits.role_id | person.id | person.name | role.id | role.name |
| 111 | 222 | 333 | 444 | 555 | 333 | N. Cage | 555 | Actor |
| 111 | 222 | 333 | 444 | 555 | 333 | N. Cage | 555 | Director |
正如其他人所说,您需要执行聚合以便一行可以具有多个角色值,或者您可以获取结果并在外部进行过滤
推荐阅读
- r - 将 Understat 数据刮入 R
- java - Spring 批量拆分处理器
- c# - 如何将 ICollection 的 FirstOrDefault 更改为 Any?
- reactjs - 将来自 syncfusion 的树组件与 Material UI 一起使用
- javascript - Angular 应用程序之外的 Web 工作集。TypeError:worker.postMessage 不是函数
- android - 如何在 LinearLayout 中动态添加 TextInputLayout?
- javascript - 是否可以在chartjs的一个画布中组合多个图表?
- ruby-on-rails - 如何为 ActiveAdmin `table_for` 数组集合有条件地呈现列
- javascript - jQuery Slider 通过 AJAX 发送错误的值
- reactjs - react-aad-msal authProvider.getAccessToken() 无限期重新加载组件