Typhon Typhon - 1 year ago 91
MySQL Question

MySQL IN() for two value/array?

I'm having trouble finding a better way to search MySQL for a pair of values in a table. I have the value pairs in an array, and would like to duplicate the IN() function, but for more than 1 value.

For example purposed; I have the following 3 pairs:


The current solution puts me at:

(column1 = 'foo' AND column2 = 1) OR
(column1 = 'boo' AND column2 = 2) OR
(column1 = 'goo' AND column2 = 3);

I'd like to think there's a more "sexy" solution seeing that I could have as many as a hundred pairs and having that may ORs kind of makes me nauseous. Thanks!!!

Answer Source
FROM    foo
WHERE   (column1, column2) IN (('foo', 1), ('bar', 2))

This syntax may be confusing, and it may be more readable to replace it with:

FROM    foo
WHERE   ROW(column1, column2) IN (ROW('foo', 1), ROW('bar', 2))

I'm used to the former one, though :)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download