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