group_idフィールドとgroup_typeフィールドを含むテーブルがあり、タプルのリストから任意のタプル( group id、group type )を持つすべてのレコードをテーブルに照会したいと思います。たとえば、次のようなことができるようにしたいと思います。
SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
非常によく似た質問がすでに出されています:sql in節でタプルを使用しますが、そこで提案されたソリューションは、タプルリストが別のテーブルからフェッチされることを前提としています。私の場合、これは機能しません。タプル値がハードコーディングされているためです。
1つの解決策は、文字列の連結を使用することです。
SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
ただし、問題は、テーブルが非常に大きく、各レコードに対して文字列の連結と変換を行うと非常にコストがかかることです。
なにか提案を?