MySQL select 行,其中两个列值根据条件至少出现一次

MySQL select rows where two column values appear at least once based on a condition

我有这样的疑问SELECT col1, col2 FROM t WHERE col1>1645 AND (col2=5 OR col2=7 OR col2=9) 我想获取所有行,其中对于 col1 的某个值,col2 的条件给出的所有值都存在。所以e。 G。来自这些记录

1700, 5
1700, 7
1700, 8
1700, 9

3 将被选中,而从以下将 none,因为缺少 col2=7

1800, 4
1800, 5
1800, 6
1800, 9

嗯,我觉得这有点棘手。我们的想法是找到具有 col2 的所有三个值的 col1 值。然后,查询 table 以获得匹配的 col1col2 值。

SELECT t.*
FROM t
WHERE t.col2 IN (5, 7, 9) AND
      t.col1 IN (SELECT col1
                 FROM t
                 WHERE col1 > 1645 AND col2 IN (5, 7, 9)
                 GROUP BY col1
                 HAVING COUNT(DISTINCT col2) = 3
                );

也许我没有理解您的问题,但这是您要问的吗? :

Select * from T INNER JOIN 
(
    select Col1 , Count(Distinct Col2) as Check_All_Values From  T 
    Where T.Col2 in ( 5,7,9 ) 
    Group by Col1 
    Having Count(Distinct Col2)  = 3
) B
ON T.id = B.id 
WHERE T.Col2 in ( 5,7,9 )