我有三个表,需要获取用户 PETER 不是发件人和不是收件人的消息。
表“消息”
idMessage | bodyText | idUserSender
---------------------------------------------
1 | This is message 1 | 2
2 | This is message 2 | 1
3 | This is message 3 | 1
表“用户”
idUser | name
-------------------
1 | John
2 | Peter
3 | Marco
表'messageRecipients'
idMessage | idUserRecipient
----------------------------
1 | 1
1 | 3
2 | 1
2 | 3
3 | 2
3 | 3
所以结果集应该是:
idMessage | bodyText | idUserSender
---------------------------------------------
2 | This is message 2 | 1
我试过:
SELECT * FROM messages AS M
LEFT JOIN
(
SELECT * FROM users WHERE idUser <> 2
) AS allUsersWithoutPeter ON M.idUserSender = allUsersWithoutPeter.idUser
GROUP BY M.idMessage
并且收到了 Peter 不是发件人的消息,但不知道如何排除 Peter 也是收件人的消息,并且只收到 Peter 不包括在内的消息。