Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL根据条件选择两列值至少出现一次的行_Mysql_Sql_Conditional Statements_Where - Fatal编程技术网

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
如何在同一行中等于不同的值?