我有这样一个查询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
值。然后,查询表以获取匹配的 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
);
关于MySQL根据条件选择两个列值至少出现一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38556357/