mysql - 搜索不属于关系 n:m 的多行
问题描述
类似的问题在这里
与上面的问题非常相似但略有不同,我需要在电影列表中找到至少没有看过一部电影的用户列表。
假设有两个表 'movies' 和 'users',它们之间有一个 n:m 关系,并且一个表 'seen' 描述了这种关系。
我需要从给定列表中找出任意数量的给定用户和任意数量的给定电影,所有用户都没有看过至少一部给定的电影。
这可以在单个查询中实现吗?我想不出办法。
编辑:这是一个尝试解决问题的演示,问题在于它返回的用户没有看过给定列表中的所有电影。我们需要的是一个没有看过该列表中任何电影的用户:http ://rextester.com/DEIH39789
解决方案
考虑用户和电影表之间的:m 关系,中间表见。
SELECT * FROM Users u WHERE NOT EXISTS (SELECT UserId FROM Seen s WHERE s.UserId = u.ID)
此查询将返回在 Seen 表中没有任何相关记录的用户
推荐阅读
- solace - 来自 VB 6.0 的安慰连接
- javascript - 使用自定义超链接包裹 Instagram 嵌入
- intern - 如何指定实习生为 http://localhost:9000 服务的根目录?
- c# - 如何在 ASP.NET Core Web API 中发布对象列表
- c# - 如何从字符串列表中创建 JSON 字符串
- java - 即使我已经将其声明为 final,我的 Face 类似乎也不是不可变的,我该如何纠正它?
- node.js - 创建数据时 Multer 发布两次
- android - 当用户按下 Android 自定义相机上的后退按钮时,如何停止视频录制
- excel - 将约会添加到非默认日历
- python - Python - 从无引发 JSONDecodeError("Expecting value", s, err.value)