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

问题描述 投票:-1回答:1

表记录包含

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      

用户将给我StringMapKeyvalue。我们必须返回唯一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

sqlite where
1个回答
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版本(最佳选项),或重新编写查询以不使用行值。

© www.soinside.com 2019 - 2024. All rights reserved.