つまり、次のとおりです。
...
select...
where (a=1 and b=1) or (a=1 and b=2) or (a=2 and b=3) or(a=3 and b =2)
これは次のように単純化できますか
...select...
where (a,b) in ((1,1),(1,2),(2,3),(3,2))
アイデアは、フィールドを個別にチェックするのではなく、ベクトルに結合してベクトル値をチェックすることです。
つまり、次のとおりです。
...
select...
where (a=1 and b=1) or (a=1 and b=2) or (a=2 and b=3) or(a=3 and b =2)
これは次のように単純化できますか
...select...
where (a,b) in ((1,1),(1,2),(2,3),(3,2))
アイデアは、フィールドを個別にチェックするのではなく、ベクトルに結合してベクトル値をチェックすることです。
あなたはあなたのDBMSを述べていませんでしたが、これは:
where (a,b) in ((1,1),(1,2),(2,3),(3,2))
有効な (標準) SQL です。
また、(少なくとも) PostgreSQL、Oracle、および MySQL で動作します。
PostgreSQL の SQLFiddle デモ: http://sqlfiddle.com/#!12/ffbcb/1
Oracle の SQLFiddle デモ: http://sqlfiddle.com/#!4/a42cb/1
MySQL の SQLFiddle デモ: http://sqlfiddle .com/#!2/a42cb/1
これは ANSI SQL であるため、他の DBMS もそれをサポートする必要があります。
SQLServer2005 以降の場合
関数 CHECKSUM() は、チェックサムと呼ばれるハッシュ値を計算します。より詳しい情報
SELECT *
FROM dbo.your_table t
WHERE CHECKSUM(a,b) in (CHECKSUM(1,1),CHECKSUM(1,2),CHECKSUM(2,3),CHECKSUM(3,2))