MySQL根据条件选择两列值至少出现一次的行
我有这样一个查询MySQL根据条件选择两列值至少出现一次的行,mysql,sql,conditional-statements,where,Mysql,Sql,Conditional Statements,Where,我有这样一个查询从t中选择col1,col2,其中col1>1645和(col2=5或col2=7或col2=9) 我想得到所有行,其中对于col1的某个值,col2上的条件给出的所有值都存在。所以e。G根据这些记录 1700, 5 1700, 7 1700, 8 1700, 9 将选择3,而从以下选项中选择无,因为缺少col2=7 1800, 4 1800, 5 1800, 6 1800, 9 嗯,我觉得这有点棘手。其思想是找到col1值,该值包含col2的所有三个值。然后,查询该表以获得
从t中选择col1,col2,其中col1>1645和(col2=5或col2=7或col2=9)
我想得到所有行,其中对于col1的某个值,col2上的条件给出的所有值都存在。所以e。G根据这些记录
1700, 5
1700, 7
1700, 8
1700, 9
将选择3,而从以下选项中选择无,因为缺少col2=7
1800, 4
1800, 5
1800, 6
1800, 9
嗯,我觉得这有点棘手。其思想是找到
col1
值,该值包含col2
的所有三个值。然后,查询该表以获得匹配的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 )
这不会返回任何结果。
col2
如何在同一行中等于不同的值?