mysql - 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)
解决方案
我想这就是你想要的。同时拥有评论 = 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)
推荐阅读
- reactjs - 如何在数组中创建 React 元素(使用道具),然后通过简单地映射到该数组来渲染它们?
- c - 如何合并两个列表而不在下面的此链接上排序?
- ansible - 如何在分子中传递额外的库存文件(动态库存脚本)?
- java - 重载抽象方法导致Java中不必要的实现
- c# - LightInject:调用 HttpPost 方法
- python - 不知道 python 元类示例代码中 'return type.__call__(cls, *args, **kwds)' 的含义和原因
- tensorflow - Is sigmoid function only applicable after dense() layer?
- c++ - 获取 char 数组的初始化字符串太长。这是编译器错误吗?
- apache-spark - 如何使用 SQL 语言有条件地替换 Spark SQL 数组值?
- node.js - 根据日期排序在弹性搜索nodejs中不起作用