结合使用和的两个结果集的SQLite查询

结合使用和的两个结果集的SQLite查询,sql,sqlite,Sql,Sqlite,以下是我的简单查询: Select user_id, body from Messages where (Messages.author = 'john' and Messages.receipt = 'erick' UNION ALL (Messages.author = 'erick' and Messages.receipt = 'john'); 我只是尝试结合这两个简单的select查询,得到如下结果: user_id body ------------------ 1

以下是我的简单查询:

Select user_id, body 
from Messages where (Messages.author = 'john' and Messages.receipt = 'erick' 
UNION ALL (Messages.author = 'erick' and Messages.receipt = 'john');

我只是尝试结合这两个简单的select查询,得到如下结果:

user_id  body
------------------
1        hello 
2        hi john
2        hello this is erick
1        this is john!
我做错了什么?

你可以试试:

Select user_id, body 
from Messages where (author = 'john' and receipt = 'erick') or
(author = 'erick' and receipt = 'john')

顺便说一句,由于您只从一个表中选择数据,因此不必每次引用字段时都指定其名称。

您可以通过更改where条件来完成此操作:

Select body
from Messages 
    where 
(messages.author = 'john' and messages.receipt = 'erick') 
or 
(messages.author = 'erick' and messages.receipt = 'john')

你应该使用前面的答案。我认为他们的表现更好

我的回答只是澄清一下
UNION
关键字:
UNION
连接两个行集,应按如下方式使用:

-- One rowset:
SELECT user_id, body FROM Messages WHERE author = 'john' AND receipt = 'erick'
UNION ALL
- Another rowset:
SELECT user_id, body FROM Messages WHERE author = 'erick' AND receipt = 'john'
; -- Union of both is returned!
但是,如果要在单个表中查找行,请避免使用
UNION
:只需根据
WHERE
条件编写一个