sql - 如何对一个模型*不*包含另一个模型的多对多关系进行过滤?

标签 sql database

我的模型在多对多关系中看起来像这样 我已经正确设置了我的链接表。但是我不知道怎么办

--> 获取所有Film 不是 Actor x 的一部分。

我需要 JOINS* 才能执行此操作吗?或简单的选择? 非常感谢任何提示。

enter image description here

最佳答案

一般的方式是使用not exists:

select f.*
from film f
where not exists (select 1 from actor_film_mapping where film_id = f.film_id);

但是,JOIN(即 LEFT JOIN)也将通过位过滤代替 IS NULL

select f.*
from film f 
left join actor_film_mapping am on am.film_id = f.film_id
where am.film_id is null;

关于sql - 如何对一个模型*不*包含另一个模型的多对多关系进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280314/

相关文章:

mysql - 使用 INSERT ... SELECT 避免表复制中的 InnoDB 事务开销

mysql - 如何在 SQL 中连接两个带有 id 和最近的下一个日期的表?

php - 在数据库 PHP 中存储用户提交的撇号

javascript - 如何更好地保存书籍等数据?

SQL 在 VB.NET 中更新数据库时遇到问题

带 Sum 和 Group By 的 SQL 查询

sql - SQL的reStructuredText?

sql - T-SQL:在修改事务结束之前运行的触发器

mysql - 如何避免主键错误

c# - Entity Framework - 外键约束