2014-03-25 30 views
0

我有三个表(正向,反向和探针),它们都包含相同的列(Query,QueryLength,Hit,Start,End,Strand,Description ,长度,Percent_id,Score,Evalue)。 我想从'forward'中找到'reverse'或'probe'表中没有找到'Hit'的唯一行。使用'AND'我没有得到任何结果,'OR'只有反向才能得到比较结果。从sqlite中找不到另外两个表中的唯一行

CREATE TABLE f AS SELECT * FROM forward WHERE forward.Hit NOT IN (SELECT Hit from reverse) OR (SELECT Hit FROM probe)

感谢您的帮助。

回答

0

当您编写... OR (SELECT Hit FROM probe)时,您有一个标量子查询,即数据库只查看子查询返回的第一个值,如果该值不为零,则将其视为“true”。

要检查值是否在另一张表中,你必须要在(在两种情况下):

SELECT * FROM forward 
WHERE Hit NOT IN (SELECT Hit FROM reverse) 
    AND Hit NOT IN (SELECT Hit FROM probe) 

如果要检查整个记录,而不是只有一列,可以使用EXCEPT :

SELECT * FROM forward 
EXCEPT 
SELECT * FROM reverse 
EXCEPT 
SELECT * FROM probe 
相关问题