首页 > 解决方案 > 从具有多个表的 SQL 数据库中获取用户 ID

问题描述

我正在尝试为观看了一定数量电影的用户获取电子邮件地址。例如,如果用户在我对电影 3 运行查询时观看了电影 1、2 和 3,那么该用户应该出现在我的表中。但是当用户匹配所有条件时,例如当我运行用户观看电影 1、2、3 和 4 的查询时,该用户不应该出现。

这是两个表:

在此处输入图像描述

在此处输入图像描述

SELECT Email 
From Users
Inner Join Movies On Users.ID = Movies.ID
Where(Movies = "Movie 1" AND Movies = "Movie 2")

但是有些用户 1 和用户 2 的显示方式,但它只需要列表中的用户 1。

标签: mysqlsqldatabasesqlitems-access

解决方案


如果你想要看过电影的用户的电子邮件,'Movie1''Movie2'可以这样做:

select u.email
from users u inner join movies m
on m.id = u.id
where m.movies in ('Movie1', 'Movie2')
group by u.email
having count(*) = 2

如果存在用户不止一次看过电影的情况,请更改:

having count(*) = 2

和:

having count(distinct m.movies) = 2 

推荐阅读