表记录包含
Records
{
UniqueId varchar(128),
Key varchar(128),
Values varchar(128)
};
UniqueId Key Values
2001 F 1
2001 G 2
2002 F 1
2002 M 1
2003 F 1
2003 G 2
2003 Z 3
用户将给我StringMap
和Key
中的value
。我们必须返回唯一ID
用户输入
Key value
F 1
G 2
我的预期结果是2001
和2003
使用以下查询时出现以下错误:
select DISTINCT (AppId) from ApplicationCustomRecords where (Key,values) in (VALUES ('A','1'), ('C','1'))
错误:“,”附近:语法错误Sqlite3版本-3.7.3
答案 0 :(得分:0)
您关于使用row values的想法很好;问题是您使用的是不支持该功能的非常旧的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版本(最佳选项),或重写查询以不使用行值。