当前位置:  开发笔记 > 数据库 > 正文

在SQL中使用IN与元组集(SQLite3)

如何解决《在SQL中使用IN与元组集(SQLite3)》经验,为你挑选了0个好方法。

我在SQLite3数据库中具有下表:

CREATE TABLE overlap_results (
neighbors_of_annotation varchar(20),
other_annotation varchar(20),
set1_size INTEGER,
set2_size INTEGER,
jaccard REAL,
p_value REAL,
bh_corrected_p_value REAL,
PRIMARY KEY (neighbors_of_annotation, other_annotation)
);

我想执行以下查询:

SELECT * FROM overlap_results WHERE 
(neighbors_of_annotation, other_annotation)
IN (('16070', '8150'), ('16070', '44697'));

也就是说,我有几个带注释ID的元组,我想获取每个这些元组的记录。sqlite3提示给我以下错误:

SQL error: near ",": syntax error

如何正确将其表示为SQL语句?


编辑我意识到我并没有很好地解释我真正的追求。让我再尝试一下。

如果某人给我neighbors_of_annotation他们感兴趣的任意术语列表,我可以编写如下的SQL语句:

SELECT * FROM overlap_results WHERE 
neighbors_of_annotation
IN (TERM_1, TERM_2, ..., TERM_N);

但现在假设这个人想给我双方面的,如果形式(TERM_1,1, TERM_1,2)(TERM_2,1, TERM_2,2),... (TERM_N,1, TERM_N,2),这里TERM_i,1neighbors_of_annotationTERM_i,2other_annotation。SQL语言是否提供同样优雅的方法来为感兴趣的对(元组)制定查询?

最简单的解决方案似乎是为这些对创建一个新表,然后将该表与要查询的表连接起来,并仅选择第一项和第二项匹配的行。创建大量AND / OR语句看起来很可怕,而且容易出错。

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有