首页 > 解决方案 > SQL:where条件与所有

问题描述

用户表

id : Integer
name: String

user_review 表

user_id: Integer
review: Integer

现在,用户记录有许多 user_review 记录。

我需要获取所有拥有5 review和的用户4 review

SELECT * FROM user JOIN user_review ON user.id = user_review.user_id
 WHERE user_review.review = 5 AND user_review.review = 4

Abobe 代码正在重新调整空结果。

我尝试了下面的代码,但是,返回错误的结果

SELECT * FROM user JOIN user_review ON user.id = user_review.user_id
 WHERE user_review.review in [5, 4] 

样本数据 用户

id name
1  MM
2  EE

用户资料

user_id, review
1        4
1        5
2        4
2        5
3        4
4        5

想要的结果

id name
1  MM             // user1, having (review4) and (review5)
2  EE             // user2, having (review4) and (review5)

标签: mysqlsqlwhere-clause

解决方案


我想这就是你想要的。同时拥有评论 = 4 和评论 = 5 的所有用户

select * from users 
where exists(select * from user_review where user_id = user.id and review = 4)
and exists(select * from user_review where user_id = user.id and review = 5)

推荐阅读