Ik denk dat Postgresql de meest elegante oplossing heeft:
SELECT *
FROM T
WHERE ("Key", "Value") IN (('B', 'Alpha'), ('A', 'Charlie'));
In SQL-SERVER 2008 en later kunt u VALUES
. gebruiken om je tuples te bouwen:
SELECT T.*
FROM T
INNER JOIN
( VALUES
('B', 'Alpha'),
('A', 'Charlie')
) v (Key, Value)
ON v.Key = T.Key
AND v.Value = T.Value
Of u kunt voor een procedure een sleutel-waardepaartype maken en dit als parameter doorgeven:
CREATE TYPE KeyValuePair AS TABLE ([Key] VARCHAR(1), [Value] VARCHAR(7));
DECLARE @T AS KeyValuePair
INSERT @T
VALUES
('B', 'Alpha'),
('A', 'Charlie')
SELECT T.*
FROM T
INNER JOIN @T v
ON v.[Key] = T.[Key]
AND v.Value = T.Value;
Voor MySQL denk ik dat je dit misschien gewoon moet bouwen met AND/OR
SELECT *
FROM T
WHERE (`Key` = 'A' AND `Value` = 'Charlie')
OR (`Key` = 'B' AND `Value` = 'Alpha')
Mijn kennis van andere DBMS is beperkt, dus als het niet een van de bovenstaande is, kan ik u niet meer helpen.
BEWERKEN (met de hulp van a_horse_with_no_name )
De PostgreSQL-syntaxis werkt ook voor Oracle (en ik denk DB2)