繁体   English   中英

MySQL SELECT IN与子查询

[英]MySQL SELECT IN with sub-query

好吧,所以我在以下方面遇到了问题。我试图用两个子查询来做一个选择语句。 我需要做的基本上是以下内容。

满足以下条件的SELECT * FROM messages WHERE

条件1:

 SELECT id 
 FROM messages 
 WHERE `receiver` = 123510 && sender= 123457 && status != 3;

条件2:

 SELECT id 
 FROM messages 
 WHERE receiver = 123457 && sender = 123510 && status !=4;

我尝试执行以下操作:

SELECT * 
FROM messages 
WHERE id IN (
                 (
                     SELECT id 
                     FROM messages 
                     WHERE `receiver` = 123510 && sender= 123457 && status != 3
                 ),
                 (
                     SELECT id 
                     FROM messages 
                     WHERE receiver = 123457 && sender = 123510 && status !=4)
                  )  

但是当我这样做时,mysql带着子查询返回了超过1行...

关于如何解决这个问题有什么建议吗?

我认为这是您要寻找的:

SELECT *
FROM messages
WHERE (receiver = 123510 AND sender = 123457 AND status <> 3) OR
      (receiver = 123457 AND sender = 123510 AND status <> 4);

您将必须使用联合来分隔每个查询,或者将其作为两个单独的IN(以OR分隔)来完成。

SELECT * 
FROM messages 
WHERE id IN (
          SELECT id
          FROM messages
          WHERE `receiver` = 123510 and 
                sender= 123457 and 
                status != 3) or
          UNION
          SELECT id
          FROM messages 
          WHERE receiver = 123457 and 
          sender = 123510 and
          status !=4)

但实际上,这样做会更好。

SELECT * 
FROM messages 
WHERE (`receiver` = 123510 and 
       sender = 123457 and 
       status != 3) or
      (receiver = 123457 and 
       sender = 123510 and
       status !=4)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM