MySQL分别选择(..)中的a和(..)中的b

MySQL分别选择(..)中的a和(..)中的b,mysql,Mysql,我不知道如何恰当地解释我想做的事情,所以我希望标题不会太遥远。但我想选择一个范围内的所有内容,其中另一个值分别存在于另一个范围内 这是伪代码: SELECT * FROM table t WHERE t.a IN (1,2,3,4,5,6,7,8,9) AND t.b IN (a,c,b,c,d,e,f,g,h) 但是,我只想选择[1,a]、[2,b]、[3,c]等等。不是[3,h]。有办法做到这一点吗? 也许这更能说明我正在努力做什么: WHERE [t.a, t.b] IN ([1,a],

我不知道如何恰当地解释我想做的事情,所以我希望标题不会太遥远。但我想选择一个范围内的所有内容,其中另一个值分别存在于另一个范围内

这是伪代码:

SELECT *
FROM table t
WHERE t.a IN (1,2,3,4,5,6,7,8,9)
AND t.b IN (a,c,b,c,d,e,f,g,h)
但是,我只想选择[1,a]、[2,b]、[3,c]等等。不是[3,h]。有办法做到这一点吗? 也许这更能说明我正在努力做什么:

WHERE [t.a, t.b] IN ([1,a], [2,b], [3,c], [4,d], [5,e], [6,f], [7,g], ...)
。。。而FIND_IN_SETt.a,'1,2,3,4,5,6,7,8,9'=FIND_IN_SETt.b,'a,b,c,d,e,f,g,h'将是一种快速但非常肮脏的方法,只要参数本身没有,'s。

WHERE (t.a, t.b) IN ((1, 'a'), (2, 'b'), ...)
UPD:

出于某种有趣的原因,我在文档中找不到它:-S

不过,也有一些著名的参考资料提到了它:

您可以在中用于多个列

您的示例的工作原理如下:

select * 
from t 
where (a,b) in ((1,'a'), (2,'b'), (3,'c'), (4,'d'), (5,'e'), (6,'f'), (7,'g'));

从什么角度看会很快?它需要一个表scanQuick,就像快速实现一样,但实际上,其他选项更好。这应该是一个临时的黑客行为,编写查询是一次性的工作,经常运行它们。太棒了,我太接近了,我用错了括号!MySQL文档是一个可怕的文本地狱,无法逃避。我也找不到。