我得到這個表:MySql的希望丟棄結果左加入
用戶
|id |Name | country|
--------------
|1 | Ben | Japan |
|2 | Jo | Japan |
|3 | Sam | US |
郵件
Ref_Users_Mails
|user_id | mail_id|
-------------------
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
,我想下面的結果: 讓所有的用戶 從國家集合 不是從組國家 收到的郵件與此mailIds ,並沒有與其他mailIds
例如收到的郵件: 全部從日本和美國沒有用戶 得到了郵件1並沒有收到2.
==>結果應該只是'喬',但我設法得到'喬'和'本'(因爲'本'也有郵件Id 1)
我該如何過濾'Ben',因爲他還收到了郵件Id 2?
這是我的查詢:
SELECT * FROM Users
LEFT JOIN Ref_Users_Mails
ON Users.id = Ref_Users_Mails.user_id
WHERE (trim(Users.country) IN ('Japan'))
AND (trim(Users.country) NOT IN ('US'))
AND (trim(Ref_Users_Mails.mail_id) NOT IN (2))
ORDER BY Users.user_id;
結果:
|id |Name | country|
--------------
|1 | Ben | Japan |
|2 | Jo | Japan |
通緝的結果:
|id |Name | country|
--------------
|2 | Jo | Japan |
*所有來自日本的用戶,而不是美國的* - 它不等於* *來自日本的所有用戶**? – splash58
這會呈現爲INNER JOIN – Strawberry
我認爲數據集不足以正確代表問題,而且解釋並不十分清楚。如果您願意,可以考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry