在where子句中按列对选择查询

时间:2019-03-05 13:47:23

标签: sqlite where

表记录包含

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      

用户将给我StringMapKey中的value。我们必须返回唯一ID

用户输入

Key value

F    1
G    2

我的预期结果是20012003

使用以下查询时出现以下错误:

select DISTINCT (AppId) from ApplicationCustomRecords where (Key,values) in (VALUES ('A','1'), ('C','1')) 
  

错误:“,”附近:语法错误Sqlite3版本-3.7.3

1 个答案:

答案 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版本(最佳选项),或重写查询以不使用行值。