查找满足两个不同条件的SQL用户

时间:2015-06-02 22:59:44

标签: sql

我有一张如下表格:

USER ID    ||    Quality_A

200;              1

15;               3

35;               7

76;               6

200;              5

如果我想找到所有用户,使得他们存在一行,用户质量为1,并且他们存在一行,用户质量为5,我该怎么做。例如,在上表中,用户200有两行,质量分别为1和5.因此他将被计算在内。

此外,非常感谢帮助标题。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样

select user_id
from table1
where quality_a in (1,5)
group by user_id
having count(distinct quality_a) >= 2

答案 1 :(得分:1)

我推荐以下查询:

SELECT DISTINCT t1.User_ID 
FROM table t1 
WHERE t1.Quality_A = 1
AND EXISTS (SELECT 1 
      FROM table t5 
      WHERE t5.User_ID = t1.User_ID 
      AND t5.Quality_A = 5
      );

我们的想法是,我们查找质量等于1的所有User_ID,然后检查原始表(使用新别名),查看质量等于5的所有User_ID,这些User_ID与我们已收集的ID之一相匹配。

您也可以使用自联接获得相同的结果,但此方法可能不太透明:

SELECT DISTINCT t1.User_ID 
FROM table t1
JOIN table t5 ON (t1.User_ID = t5.User_ID)
WHERE t1.Quality_A = 1
AND t5.Quality_A = 5;