SQL Query根据多个条件返回结果集

时间:2015-08-27 21:39:46

标签: mysql sql

我希望返回一个SQL查询,该查询返回一组符合多个条件的结果,但只返回这些条件的不同结果。这就是我所拥有的:

  • 一组与项目列表匹配的用户ID
  • 每个项目都有一个品牌和与之相关的评级
  • 我尝试编写一个查询,返回包含2个特定品牌商品的用户列表,评分为5

示例:

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,但无法正确理解逻辑。有什么想法吗?

1 个答案:

答案 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