[英]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.