NOT IN with OR operator MYSQL



我想选择一行中sender不等于任何列表元素的行,如果不等于,则检查receiver是否不等于任何一个列表元素

SELECT * FROM messages WHERE ((sender NOT IN ( 'user1','3' )) OR (recipient NOT IN ( 'user1','3' ))) 

问题:

这不是像以前那样过滤数据并给出结果!

尽管这确实有效:

SELECT * FROM messages WHERE (recipient NOT IN ( 'user1','3' )) 

应该改变什么?

对于未来的读者,上面的评论让我了解了如何使用OR和NOT IN,如下所示:

SELECT * FROM messages WHERE (sender OR recipient NOT IN ( 'user1','3' )) 

您需要吗

where
NOT (   sender IN ( 'user1','3' )
OR recipient IN ( 'user1','3' )
)

所以这里,包装OR条件是…发件人是列表中的一个,或者收件人是列表中一个。外层抛出NOT。

最新更新