我希望返回一个SQL查询,该查询返回一组符合多个条件的结果,但只返回这些条件的不同结果。这就是我所拥有的:
示例:
user_id brands rating
------- ------ ------
1 A 5
1 B 4
1 C 5
2 A 3
2 C 1
3 A 5
3 B 4
3 C 5
4 D 3
4 B 4
4 C 5
我想返回带有品牌A和品牌C的商品的user_ids列表,其中的评分均为5.所以结果将是:
user_id
-------
1
3
我尝试过一些事情,包括使用联盟的SELECT,但无法正确理解逻辑。有什么想法吗?
答案 0 :(得分:1)
这应该可以解决问题:
选择具有品牌A和C的唯一用户,并且两者的评级均为5。您可以通过将表连接到自身来实现此目的,从而提供两个不同的别名。这样,您可以让t1为品牌A返回用户,并为t2返回品牌C的同一用户。
select distinct
t1.user_id
from YourTable t1
inner join YourTable t2 on t2.user_id = t1.user_id
where
t1.brands = 'A' and
t2.brands = 'C' and
t1.rating = 5 and
t2.rating = 5