MySQL根据条件选择两个列值至少出现一次的行

标签 mysql sql conditional-statements where-clause

我有这样一个查询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 将被选中,而以下将不会被选中,因为缺少 col2=7

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

最佳答案

嗯,我觉得这有点棘手。这个想法是找到具有 col2 的所有三个值的 col1 值。然后,查询表以获取匹配的 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
                );

关于MySQL根据条件选择两个列值至少出现一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38556357/

相关文章:

mysql - 如何在与另一个表连接之前找到一组数据的模式?

javascript - 如何为未加载、加载时间过长和阻塞的 css 文件编写回退?

javascript - PHP数据库查询: How to return the results from a while loop to a Javascript Variable?

JavaScript: `if/else` 语句比中的条件语句更快吗?

mysql - 通过 Load data infile : CSV engine an alternative? 将 95 GB CSV 文件上传到 MySQL MyISAM 表中

mysql - 选择错误 排序规则组合非法

sql - 如何在 PostgreSQL 中计算年份

php - 使用 PHP OO 类获取行

mysql - 无法将 Docker PhpMyAdmin 连接到 MySQL Server Mac OS,错误 #2002

php - 从复选框中获取选中的值,即从数据库中获取数据