2017-06-16 21 views
-1

我有一個「用戶」表SQL搜索用戶不在該用戶的黑名單

user_id| 
1  | 
2  | 
3  | 
4  | 
5  | 

和「黑名單」表

blocker_id|blocked_id 
1   | 3 
2   | 3 

現在我要搜索用戶在「用戶」表,該表不被阻止該用戶AND該用戶未被阻止用戶

(不會彼此阻塞) 這樣的:

SELECT * FROM users 
+1

你的「喜歡這個」有點含糊不清;)另外,爲你正在使用的數據庫添加一個標籤。 –

+0

對不起,我的一些文字沒有被複制!我編輯它 –

回答

2

試試這個,有NOT IN()

SELECT * 
FROM users 
WHERE user_id NOT IN (SELECT blocked_id FROM blocklist) 
+0

我想不是由該用戶 –

+0

我想應該是這樣的只是阻止: 'SELECT * FROM 用戶 其中USER_ID NOT IN(SELECT blocked_id FROM WHERE塊列表= blocker_id AND users.user_id blocked_id = X )' –

+0

@MiladJVR還有點不清楚 - 將您的預期結果添加到您的問題中,並且應該將其清除。 –

0

下面是答案:

SELECT * FROM users WHERE user_id NOT IN (SELECT blocked_id FROM blocklist WHERE blocked_id = users.user_id AND blocker_id = X) AND user_id NOT IN (SELECT blocker_id FROM blocklist WHERE blocker_id = users.user_id AND blocked_id = X) 

X是user_id,我想不阻擋或被sql結果阻止