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 以获得匹配的 col1
和 col2
值。
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 )
我有这样的疑问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 以获得匹配的 col1
和 col2
值。
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 )