Ваша идея об использовании значений строк работает отлично; проблема в том, что вы используете очень старую версию sqlite, которая не поддерживает эту функцию (она была добавлена в 3.15.0). С более свежим выпуском:
$ sqlite3
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> CREATE TABLE test(key, val);
sqlite> INSERT INTO test VALUES ('A', 1), ('B', 2), ('C', 3);
sqlite> SELECT * FROM test WHERE (key, val) IN (VALUES ('A', 1), ('B', 2));
key val
---------- ----------
A 1
B 2
Так что обновите свою версию sqlite (лучший вариант) или перепишите запрос, чтобы не использовать значения строк.