2014-03-25 79 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 
相關問題