2012-11-26 42 views
3

这里是我现有的查询这两个表中的成功选择不重复的记录,并将它们组合成一列:如何从两个表中选择不同的记录,合并为一列,并使用SQLite消除另一个表中存在的所有记录?

SELECT index_text AS unique_text FROM words 
UNION 
SELECT c1index_text FROM words_content 
ORDER BY unique_text 

现在我要消除所有记录WHERE body NOT IN (SELECT body FROM sms)(或NOT EXISTS,无论作品是罚款)。问题是无论我尝试什么,无论何时尝试使用括号,我都会遇到语法错误,或者它不会识别sms.body(即使我在每个列的父级表之前)。我认为一些SQLite的限制可能会使它比需要更难,但必须有一个解决方法。 下面是我曾尝试不成功查询(我也试图无济于事这些查询的许多变体):

SELECT index_text AS unique_text FROM words 
UNION 
SELECT c1index_text FROM words_content 
    WHERE body NOT IN (SELECT body FROM sms) 
ORDER BY unique_text 

结果错误:No such column: body

SELECT words.index_text AS unique_text FROM words 
UNION 
SELECT words_content.c1index_text FROM words_content 
LEFT JOIN sms 
    ON sms.body=unique_text 
ORDER BY unique_text 

结果错误:No such column: unique_text

如何加入别名列并仅显示sms.body中不存在的记录?谢谢,

回答

2

如果所使用或者加入你必须把它们应用到两个select语句的UNION条款。

SELECT index_text AS unique_text 
FROM words 
where index_text NOT IN (SELECT body FROM sms) 
UNION 
SELECT c1index_text 
FROM words_content 
WHERE c1index_text NOT IN (SELECT body FROM sms) 
ORDER BY unique_text 
+0

呃!我应该知道这一点。非常感谢!!!它不会让我将这标记为另一个8分钟的接受答案,但我会尽我所能。 – Dan

相关问题